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

[经验分享] redis数据类型与基本操作

[复制链接]

尚未签到

发表于 2015-11-12 11:40:00 | 显示全部楼层 |阅读模式
  转载地址:http://xiaoruoen.blog.iyunv.com/4828946/833406
  
  Redis最为常用的数据类型有以下五种


  • String
  • Hash
  • List
  • Set
  • ShortedSet
  下面记录一下这几种类型与Redis里对其的操作
  String
  最常用的一种数据类型,普通的key/value存储都可以归为此类。
  set   存储一个String


  • redis 127.0.0.1:6379> set news.blog.title  "kaka is back!"
  • OK

  get   读取一个String


  • redis 127.0.0.1:6379> get news.blog.title
  • "kaka is back!"

  decr   如果String存储的是数字的话,对其递减。如果递减的key不存在的话,将set一个key,并将其的值设为0。如果String存储的不是数字或所存的数字超出64bit,则报错


  • redis 127.0.0.1:6379> set num "10"
  • OK
  • redis 127.0.0.1:6379> decr num
  • (integer) 9
  • redis 127.0.0.1:6379> decr num1 (num1原本不存在,自动生成一个,并将其初始值设为0
  • (integer) -1
  • redis 127.0.0.1:6379> get num1
  • "-1"
  • redis 127.0.0.1:6379> set num2 "a"
  • OK
  • redis 127.0.0.1:6379> decr num2
  • (error) ERR value is not an integer or out of range
  • redis 127.0.0.1:6379> set num2 "234293482390480948029348230948"
  • OK
  • redis 127.0.0.1:6379> decr num2
  • (error) ERR value is not an integer or out of range

  incr  与decr相同,其为递增


  • redis 127.0.0.1:6379> incr num
  • (integer) 10
  • redis 127.0.0.1:6379> incr num3 (num3原本不存在,自动生成一个,并将其初始值设为0
  • (integer) 1

  mget  得到所有key的值


  • redis 127.0.0.1:6379> mget num num1 num2 num3
  • 1) "10"
  • 2) "-1"
  • 3) "234293482390480948029348230948"
  • 4) "1"


  mset key value [key1 value1...]  设置多个键值对


  • redis 127.0.0.1:6379> mset data1 "hello" data2 "thanks" data3 "haha"
  • OK
  • redis 127.0.0.1:6379> mget data1 data2 data3
  • 1) "hello"
  • 2) "thanks"
  • 3) "haha"

  Hash
  相当于Map,可以存储键值对
  HSET/HGET 存储/查询一个Hash,单属性


  • redis 127.0.0.1:6379> hset user.22213 name "xiaoruoen"
  • (integer) 1

  • redis 127.0.0.1:6379> hget user.22213 name
  • "xiaoruoen"

  HMSET/HMGET 存储/查询一个Hash,多属性


  • redis 127.0.0.1:6379> hmset usr.135001 name "xiaoruoen" age 25 sex "male"
  • OK
  • redis 127.0.0.1:6379> hmget usr.135001 name age sex
  • 1) "xiaoruoen"
  • 2) "25"
  • 3) "male"

  HKEYS/HVALS    列出Hash里所有的key值/valuewfh


  • redis 127.0.0.1:6379> hkeys usr.135001
  • 1) "name"
  • 2) "age"
  • 3) "sex"
  • redis 127.0.0.1:6379> hvals usr.135001 1) "xiaoruoen" 2) "25" 3) "male"

  HLEN   得到Hash的长度


  • redis 127.0.0.1:6379> hlen usr.135001
  • (integer) 3

  HSETNX 只有当hash里没有这个key是才会生成一个key/value。如果hash里面已经存在这个key值的话,则些操作将被忽略


  • redis 127.0.0.1:6379> hsetnx usr.556633 name "kaka"
  • (integer) 1
  • redis 127.0.0.1:6379> hsetnx usr.556633 name "kaxi"
  • (integer) 0
  • redis 127.0.0.1:6379> hget usr.556633 name
  • "kaka"

  HDEL 删除hash里面的key/value


  • redis 127.0.0.1:6379> hdel usr.135001 sex
  • (integer) 1
  • redis 127.0.0.1:6379> hkeys usr.135001
  • 1) "name"
  • 2) "age"

  List
  Redis list的实现为一个双向链表,即可以支持反向查找和遍历。
  LPUSH/RPUSH  向List的头部或者尾部添加值。如果List不存在的话,则创建一个。


  • redis 127.0.0.1:6379> lpush usrlist "kaka"
  • (integer) 1
  • redis 127.0.0.1:6379> lpush usrlist "xiaoruoen"
  • (integer) 2
  • redis 127.0.0.1:6379> rpush usrlist "arivel"
  • (integer) 3
  • redis 127.0.0.1:6379> rpush usrlist "bear"

  LRANGE  返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。


  • redis 127.0.0.1:6379> lrange usrlist 0 3  列出从第一个到第4个无素,lrange只能正向排列
  • 1) "xiaoruoen"
  • 2) "kaka"
  • 3) "arivel"
  • 4) "bear"

  Set
  Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
  SADD 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。


  • redis 127.0.0.1:6379> sadd usrtest "xiaoruoen"
  • (integer) 1
  • redis 127.0.0.1:6379> sadd usrtest "xiaoruoen"
  • (integer) 0

  SMEMBERS 返回集合 key 中的所有成员。


  • redis 127.0.0.1:6379> smembers usrtest
  • 1) "CR7"
  • 2) "kaka"
  • 3) "xiaoruoen"

  SortedSet
  Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么 可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
  ZADD
  
  将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
  如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。


  • redis 127.0.0.1:6379> zadd pagerank 1 "google" 7 "baidu" 3 "taobao" 4 "qq"   
  • (integer) 4
  • redis 127.0.0.1:6379> zrange pagerank 0 -1
  • 1) "google"
  • 2) "taobao"
  • 3) "qq"
  • 4) "baidu"

  ZREM
  移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。


  • redis 127.0.0.1:6379> zrem pagerank qq
  • (integer) 1
  • redis 127.0.0.1:6379> zrange pagerank 0 -1
  • 1) "google"
  • 2) "taobao"
  • 3) "baidu"

  ZCARD
  返回有序集key的个数


  • redis 127.0.0.1:6379> zcard pagerank
  • (integer) 3

运维网声明 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-138286-1-1.html 上篇帖子: windows下使用redis 下篇帖子: redis spring缓存配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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