mac os x用macport安装redis

一、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:6379> set mykey "10"
OK
redis 127.0.0.1:6379> get mykey
"10"
redis 127.0.0.1:6379> incr mykey
(integer) 11
redis 127.0.0.1:6379> get mykey
"11"
redis 127.0.0.1:6379> 

   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> 

  

 

posted @ 2014-01-13 12:05  lhj588  阅读(1684)  评论(0编辑  收藏  举报