设为首页 收藏本站
查看: 2184|回复: 0

[经验分享] mac os x用macport安装redis

[复制链接]

尚未签到

发表于 2015-7-21 08:37:25 | 显示全部楼层 |阅读模式
一、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>

  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-88861-1-1.html 上篇帖子: Redis实现分布式锁 php 下篇帖子: socket.io+redis
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表