一、Redis简要介绍

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。[1]

2性能

下面是官方的bench-mark数据:
测试完成了50个并发执行100000个请求。
设置和获取的值是一个256字节字符串。
Linux box是运行Linux 2.6,这是X3320 Xeon 2.5 ghz。
文本执行使用loopback接口(127.0.0.1)。
结果:写的速度是110000次/s,读的速度是81000次/s

如果真要把Redis与Memcached进行对比,参考下图:

使用Memcached,让我感触颇深的是Object Size的问题,由于SQL未作优化直接映射对象,导致缓存对象大于1MB,Memcached就抛了异常。而Redis默认缓存对象512MB,最大支持1GB。至少在缓存对象时,可以有更大的伸缩空间了! 此外,是数据类型。Memcached比较简单,而Redis可以支持更多复杂的数据类型,如HASH、SET、SortedSet等等。

二、安装使用

  1、安装操作命令

    port install redis

2、运行redis命令

redis-server /opt/local/etc/redis.conf

3、查看是否按照成功、使用使用缓存操作。

Holele-Book-Pro:~ user$ redis-cli
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> get mykey
(nil)
redis 127.0.0.1:6379>

  

三、Redis常用操作使用命令。    

  1、append key value    

redis 127.0.0.1:6379> EXISTS mykey
(integer) 0
redis 127.0.0.1:6379> append mykey "www.sdgou.com"
(integer) 13
redis 127.0.0.1:6379> append mykey " welcome"
(integer) 21
redis 127.0.0.1:6379> get mykey
"www.sdgou.com welcome"
redis 127.0.0.1:6379>

  2、bitcount key [start] [end]

redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> get mykey
(nil)
redis 127.0.0.1:6379> set mykey "http://www.sdgou.com"
OK
redis 127.0.0.1:6379> bitcount mykey
(integer) 93
redis 127.0.0.1:6379> bitcount mykey 0 0
(integer) 3
redis 127.0.0.1:6379> bitcount mykey 1 1
(integer) 4
redis 127.0.0.1:6379>

3、bitop operation destkey key [key...]  

  • bitop and destkey srckey1 srckey2 srckey3 ... srckeyN
  • bitop or destkey srckey1 srckey2 srckey3 ... srckeyN
  • bitop xor destkey srckey1 srckey2 srckey3 ... srckeyN
  • bitop not destkey srckey

      位运算,按位与、按位或、按位异或、按位非

   

redis 127.0.0.1:6379> set mykey1 1
OK
redis 127.0.0.1:6379> set mykey2 1
OK
redis 127.0.0.1:6379> bitop and myresult mykey1 mykey2
(integer) 1
redis 127.0.0.1:6379> get myresult
"1"
redis 127.0.0.1:6379> set mykey2 0
OK
redis 127.0.0.1:6379> bitop and myresult mykey1 mykey2
(integer) 1
redis 127.0.0.1:6379> get myresult
"0"
redis 127.0.0.1:6379> bitop or myresult mykey1 mykey2
(integer) 1
redis 127.0.0.1:6379> get myresult
"1"
redis 127.0.0.1:6379> set mykey1 0
OK
redis 127.0.0.1:6379> bitop or myresult mykey1 mykey2
(integer) 1
redis 127.0.0.1:6379> get myresult
"0"

  4、decr  key  value

redis 127.0.0.1:6379> set key1 "10"
OK
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> decr key1
(integer) 9
redis 127.0.0.1:6379> get key1
"9"
redis 127.0.0.1:6379> set key1 "12312434325325254364654745"
OK
redis 127.0.0.1:6379> decr key1
(error) ERR value is not an integer or out of range
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> get key1
"12312434325325254364654745"
redis 127.0.0.1:6379> redis 127.0.0.1:6379> del key1
(integer) 1
redis 127.0.0.1:6379> set key1 "10"
OK
redis 127.0.0.1:6379> get key1
"10"
redis 127.0.0.1:6379> decr key1
(integer) 9
redis 127.0.0.1:6379> get key1
"9"
redis 127.0.0.1:6379> decr key1
(integer) 8
redis 127.0.0.1:6379> get key1
"8"
redis 127.0.0.1:6379>

  5、decrby key value

redis 127.0.0.1:6379> del key1
(integer) 1
redis 127.0.0.1:6379> get key1
(nil)
redis 127.0.0.1:6379> set key1 "20"
OK
redis 127.0.0.1:6379> decrby key1
(error) ERR wrong number of arguments for 'decrby' command
redis 127.0.0.1:6379> get key1
"20"
redis 127.0.0.1:6379> decrby key1 5
(integer) 15
redis 127.0.0.1:6379> decrby key1 4
(integer) 11
redis 127.0.0.1:6379> get key1
"11"
redis 127.0.0.1:6379>

  6、get key

  

redis> GET nonexisting
(nil)
redis> SET mykey "Hello"
OK
redis> GET mykey
"Hello"
redis>

  7、getbit key offset

redis> SETBIT mykey 7 1
(integer) 0
redis> GETBIT mykey 0
(integer) 0
redis> GETBIT mykey 7
(integer) 1
redis> GETBIT mykey 100
(integer) 0
redis>

  8、getrange key start and

redis> SET mykey "This is a string"
OK
redis> GETRANGE mykey 0 3
"This"
redis> GETRANGE mykey -3 -1
"ing"
redis> GETRANGE mykey 0 -1
"This is a string"
redis> GETRANGE mykey 10 100
"string"
redis>

  9、getset key value

(integer) 0
redis 127.0.0.1:6379> del key1
(integer) 1
redis 127.0.0.1:6379> incr key1
(integer) 1
redis 127.0.0.1:6379> get key1
"1"
redis 127.0.0.1:6379> getset key1 "0"
"1"
redis 127.0.0.1:6379> get key1
"0"
redis 127.0.0.1:6379> set key2 "hello"
OK
redis 127.0.0.1:6379> getset key2 "sdgou.com"
"hello"
redis 127.0.0.1:6379> get key2
"sdgou.com"
redis 127.0.0.1:6379>

  10、incr key

redis 127.0.0.1:> set mykey ""
OK
redis 127.0.0.1:> get mykey
""
redis 127.0.0.1:> incr mykey
(integer)
redis 127.0.0.1:> get mykey
""
redis 127.0.0.1:>

   11、incrby key increment

edis> SET mykey "10"
OK
redis> INCRBY mykey 5
(integer) 15
redis>

  12、incrbyfloat key increment

redis> SET mykey 10.50
OK
redis> INCRBYFLOAT mykey 0.1
"10.6"
redis> SET mykey 5.0e3
OK
redis> INCRBYFLOAT mykey 2.0e2
"5200"
redis>

  13、mget key [key...]

redis> SET key1 "Hello"
OK
redis> SET key2 "World"
OK
redis> MGET key1 key2 nonexisting
1) "Hello"
2) "World"
3) (nil)
redis>

  14、mset key value [key value ...]

edis> MSET key1 "Hello" key2 "World"
OK
redis> GET key1
"Hello"
redis> GET key2
"World"
redis>

  15、msetnx key value [key value ...]

redis> MSETNX key1 "Hello" key2 "there"
(integer) 1
redis> MSETNX key2 "there" key3 "world"
(integer) 0
redis> MGET key1 key2 key3
1) "Hello"
2) "there"
3) (nil)
redis>

  16、psetex key milliseconds value

redis> PSETEX mykey 1000 "Hello"
OK
redis> PTTL mykey
(integer) 998
redis> GET mykey
"Hello"
redis>

  17、set key value [EX seconds] [PX milliseconds] [NX|XX]

edis> SET mykey "Hello"
OK
redis> GET mykey
"Hello"
redis>

  18 、setbit  key offset value

redis> SETBIT mykey 7 1
(integer) 0
redis> SETBIT mykey 7 0
(integer) 1
redis> GET mykey
"\u0000"
redis>

 19、setex   key seconds value

redis> SETEX mykey 10 "Hello"
OK
redis> TTL mykey
(integer) 10
redis> GET mykey
"Hello"
redis>

  20 、setnx   key value

edis> SETNX mykey "Hello"
(integer) 1
redis> SETNX mykey "World"
(integer) 0
redis> GET mykey
"Hello"
redis>

 21 setrange key offset value

redis> SET key1 "Hello World"
OK
redis> SETRANGE key1 6 "Redis"
(integer) 11
redis> GET key1
"Hello Redis"
redis>

  22、strlen  key

redis> SET mykey "Hello world"
OK
redis> STRLEN mykey
(integer) 11
redis> STRLEN nonexisting
(integer) 0
redis>

  

mac os x用macport安装redis的更多相关文章

  1. mac os 10.10上安装my eclipse显示virtual memory不足,解决方案

    mac os 10.10上安装my eclipse显示virtual memory不足,安装失败. 自从把OS 升级到10.10 之后, 各种问题, 安装的时候向导提示提示我们说没有足够的虚拟内存, ...

  2. Sqlite在Windows、Linux 和 Mac OS X 上的安装过程

    一:在 Windows 上安装 SQLite 1,下载 请访问SQLite下载页面http://www.sqlite.org/download.html,从Windows 区下载预编译的二进制文件.需 ...

  3. 在Mac OS X 下快速安装Nginx

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; color: #8e68ff } p.p2 { margin: 0.0p ...

  4. 【原创】Mac os 10.10.3 安装xgboost

    大家用的比较多的是Linux和windows,基于Mac os的安装教程不多, 所以在安装的过程中遇到很多问题,经过较长时间的尝试,可以正常安装和使用, [说在前面]由于新版本的Os操作系统不支持op ...

  5. Mac OS X Mountain Lion安装Bochs

    基本步骤可以看这个帖子 http://hi.baidu.com/any_where/item/990c0acdfbd6542c47d5c003 大体是: 1.安装x11; 2.开启Mac OS X的r ...

  6. 在 Mac OS X 10.10 安装 pyenv 的一个小坑

    小记一下. 因为全面转向 Python 3.4 作为主力开发版本,但是手上的 Mac OS X 和服务器上用的都是 Python 2.7,所以需要安装 pyenv. 按其 github 页面的说明,使 ...

  7. Windows下虚拟机安装Mac OS X —– VMware Workstation12安装Mac OS X 10.11

    1下载  镜像:Instal OS X Yosemite 10.10.3(14D131).cdr        密码:qhhm 2 unlocker208文件(链接:https://pan.baidu ...

  8. VirtualBox安装Mac OS 10.11——虚拟机安装黑苹果

    由于需要安装mac环境跑IOS应用,所以在虚拟机装个黑苹果. 一.下载虚拟机安装包,VirtualBox是官网下的最新版:  5.0.6 for Windows hosts x86/amd64  官网 ...

  9. Mac OS 基于 VirtualEnv 的安装 tensorflow 1.3.0

    如果不行的话,就用conda装吧 https://www.jianshu.com/p/d54546ab315e 推荐使用 virtualenv 创建一个隔离的容器, 来安装 TensorFlow. 这 ...

随机推荐

  1. 线状DP(石子归并)

    题意:有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻的2堆石子合并,合并花费为新合成的一堆石子的数量.求将这N堆石子合并成一堆的总花费最小(或最大). dp[i][j]为从i到j的 ...

  2. 中兴手机关闭3G网络

    手机总是自动在2G和3G之间切换,关闭3G算了. 拨*983*683# 出来画面,然后选GSM Only即可 网上还有另一种方法: *#*#4636#*#* 在这个里,我没有找到GSM Only

  3. ES6 fetch函数与后台交互

    最近在学习react-native,遇到调用后端接口的问题.看了看官方文档,推荐使用es6的fetch来与后端进行交互,在网上找了一些资料.在这里整理,方便以后查询. 1.RN官方文档中,可使用XML ...

  4. android和ubifs

    原文地址: http://opendevkit.com/?e=37 1. ubifs号称性能比yaffs2 好,同时压缩可读写,文件系统image体较小同时可写,相当不错 2. ubifs制作 (1) ...

  5. Book Review: PowerShell 3.0 Advanced Administration Handbook

    Recently I read a book, PowerShell 3.0 Advanced Administration Handbook, which I found really worthy ...

  6. [WinAPI] API 13 [遍历指定目录 打印文件和其他属性]

    Windows API中,有一组专门的函数和结构,用于遍历目录,它们是FindFirstFile函数.FindNextFile函数和WIN32_FIND_DATA结构.使用FindFirstFile和 ...

  7. C# 6.0那些事

    这两天期中考试没时间去看Connect();直播,挺可惜的,考完后补看了Connect(); 把C#6.0的新东西总结一下. 自动属性初始化 (Initializers for auto-proper ...

  8. CheckStyle, 强制你遵循编码规范

    如今代码静态检查越来越重要,已经成为构建高质量软件的不可或缺的一个验证步骤.如果你使用的是java语言,那么CheckStyle则是一个利器. CheckStyle能够帮助程序员检查代码是否符合制定的 ...

  9. Javascript构造函数与prototype

    构造函数 构造函数的缺点 prototype的引入 Prototype模式的验证方法 构造函数 在Javascript语言中,new命令后面跟的不是类,而是构造函数(constructor). 构造函 ...

  10. 15个专业版响应式WordPress主题

    当你准备创建一个新的网站,你会发现有很多的WordPress主题供你选择,它们强大而且合适.虽然大量的第三方插件可以解决脚本的问题,但这次我们要向你介绍一些完全不同于以往的主题,它们都是专业开发者开发 ...