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

[经验分享] redis 的操作

[复制链接]

尚未签到

发表于 2018-11-6 12:35:48 | 显示全部楼层 |阅读模式
  操作String
  set key value;//如果已有key则覆盖
  get key;
  getset key newValue  //设置新值,获取久值,
  setnx key value //如果已有key则不覆盖,没有则添加
  setex key time value //key 的值的有效时间为time,过时为key value 消失
  setex key value //没有设置有效期,则永久有效
  setrange key index new_substring // key 对应的value 从下标index 往后替换为新的new_substring,(只是替换oldstring 中间的部分,如果index后面的长度大于新的new_string,后面的还保留不变);
  getrange key index1, index2// 获取子串
  mset  msetnx  批量操作 mset key1 value1 key2 value2 //及成功都成功,不成功都不成功
  mget 批量获取 mget key1 key2 ....
  incr key //进行++ 操作 返回新的值
  incrby key addValue // 加 addValue 返回新值, key 不存在的时候,设置key,默认原来为0decr age //对key的值做减1操作
  decrby age 5 //对key的值做指定值操作
  append name .com //对字符串追加字符串,返回新字符串长度
  strlen name //获取字符串的长度
  hash -----------------
  
  hash是一个String类型的file和Value的映射表,它的添加,删除、操作都是O(1)(平均),hash特别适合存储对象。相较于将对象的每一个字段存成当个String类型,建一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
  
  hset user:1 name xiao //设置hash表key值//   hser user:id  key value
  hget user:1 name //获取hash表key值
  hsetnx user:1 sex man //判断hash表key值是否存在,不存在则设置
  hget user:1 sex
  hmset user:1 age 30 email 258082291@qq.com
  hmget user:1 name age sex email
  hincrby user:1 age 5
  hexists user:1 age     //user:1 的age是否存在,存在返回1
  hlen user:1 //返回hash表的  键数(age , email)
  hdel user:1 age //删除hash表的键
  hkeys user:1 //返回hash表的所有key
  hvals user:1 //返回hash表的所有value值
  hgetall user:1 //返回hash中的所有key和value值
  list
  list 是一个链表结构,主要功能是push,pop,获取一个范围的所有值等等,操作中Key理解为链表的名字,redis的list类型其实就是一个每个元素都是String类型的双向链表,我们可以通过push,和pop操作从链表的头部和尾部添加删除元素,这样他list既可以作为栈,也可以作为队列。
  List是一个链表结构,既可可以做为栈也可以作为队列处理数据.
  lpush mylist "world" //向mylist尾部中放入world ,返回mylist中元素的个数
  lpush mylist "hello" //向mylist尾部中存入hello
  lrange 0 -1 //获取mylist中的所有元素 hello, world  
  rpush mylist2 "hello" //向mylist头部中存入hello
  rpush mylist2 "world" //向mylist头部中存入world
  lrange 0 -1,    hello ,world  队列
  linsert mylist2 before world "xhy" //向mylist中world元素前插入"xhy"
  lset mylist2 0 "example" //设置mylist中的第0个元素的值为"example"
  push mylist_rem "one"
  lpush mylist_rem "one"
  lpush mylist_rem "one"
  lrem mylist_rem 1 "one //删除1个值为"one"的元素
  lpush mylist_ltrim "one"
  lpush mylist_ltrim "two"
  lpush mylist_ltrim "three"
  lpush mylist_ltrim "four"
  lpush mylist_ltrim "five"
  ltrim mylist_ltrim 2 3 //除了第2和第3个元素,删除其它元素
  lpush list_pop 1
  lpush list_pop 1
  lpush list_pop 1
  lrange list_pop 0 -1
  lpop list_pop //从头部删除list_pop的第一个元素
  rpop list_pop //从尾部删除list_pop的第一个元素
  lpush list_1 0
  lpush list_1 1
  lpush list_1 2
  lpush list_1 3
  lrange list_1 0 -1
  lpush list_2 4
  lpush list_2 5
  lpush list_2 6
  lpush list_2 7
  lrange list_2 0 -1
  rpop lpush list_1 list_2 //从list_1中的尾部弹出第1个元素并添加到list_2的头部中
  lindex list_2 0 //取出list_2第0个元素
  lindex list_2 1
  llen //返回链表的长度
  
  set
  set 是string类型对象的无序集合,set不管存储多少对象,对存储对象的add,remove和test操作的时间复杂度是O(1)。set最多能包含 232 - 1 个member。
  1、增加
  语法:sadd key member[member...]
  解释:对特定key的set增加一个或多个值,返回是增加元素的个数。注意:对同一个member多次add,set中只会保留一份。
[root@xsf001 ~]# redis-cli   
redis 127.0.0.1:6379> sadd stu zhangsan lisi wangwu #新增
  
(integer) 3
  
redis 127.0.0.1:6379> smembers stu    #得到set的所有member
  
1) "wangwu"
  
2) "lisi"
  
3) "zhangsan"
  
redis 127.0.0.1:6379> sadd stu zhangsan #增加存在的member
  
(integer) 0
  
redis 127.0.0.1:6379> smembers stu
  
1) "wangwu"
  
2) "lisi"
  
3) "zhangsan"
  
redis 127.0.0.1:6379> sadd tech wangwu liming joe
  
(integer) 3
  
redis 127.0.0.1:6379> sadd tech jim
  
(integer) 1
  
redis 127.0.0.1:6379> smembers tech
  
1) "jim"
  
2) "liming"
  
3) "wangwu"
  
4) "joe"
  2、查询
  a)smembers
  语法:smembers key
  解释:获取set中的所有member
redis 127.0.0.1:6379> smembers stu  
1) "wangwu"
  
2) "lisi"
  
3) "zhangsan"
  
redis 127.0.0.1:6379> smembers tech
  
1) "jim"
  
2) "liming"
  
3) "wangwu"
  
4) "joe"
  b)sismember
  语法:sismember key member
  解释:判断值是否是set的member。如果值是set的member返回1,否则,返回0
redis 127.0.0.1:6379> sismember tech jim #jim 是set的member  
(integer) 1
  
redis 127.0.0.1:6379> sismember tech jim001 #jim001 不是set的member
  
(integer) 0
  c)scard
  语法:scard key
  解释:返回set的member个数,如果set不存在,返回0
redis 127.0.0.1:6379> scard tech  # tech 存在  
(integer) 4
  
redis 127.0.0.1:6379> scard stud #stud 不存在
  
(integer) 0
  
redis 127.0.0.1:6379> scard stu
  
(integer) 4
  d)srandmember
  语法:srandmember key
  解释:从set中返回一个随机member
redis 127.0.0.1:6379> srandmember stu  
"zhangsan"
  
redis 127.0.0.1:6379> srandmember stu
  
"zhangsan"
  
redis 127.0.0.1:6379> srandmember stu
  
"wangwu"
  
redis 127.0.0.1:6379> srandmember stu
  
"zhangsan01"
  3、删除
  a)spop
  语法:spop key
  解释:移除并返回一个随机member
redis 127.0.0.1:6379> smembers stu #pop前  
1) "zhangsan01"
  
2) "wangwu"
  
3) "lisi"
  
4) "zhangsan"
  
redis 127.0.0.1:6379> spop stu  #移除一个随机member
  
"lisi"
  
redis 127.0.0.1:6379> smembers stu #pop后
  
1) "zhangsan01"
  
2) "wangwu"
  
3) "zhangsan"
  b)srem
  语法:srem key member [member ...]
  解释:移除一个或多个member
redis 127.0.0.1:6379> smembers tech  
1) "jim"
  
2) "liming"
  
3) "wangwu"
  
4) "joe"
  
redis 127.0.0.1:6379> srem tech jim   #移除jim
  
(integer) 1
  
redis 127.0.0.1:6379> smembers tech
  
1) "liming"
  
2) "wangwu"
  
3) "joe"
  
redis 127.0.0.1:6379> srem tech liming joe #移除多个member
  
(integer) 2
  
redis 127.0.0.1:6379> smembers tech
  
1) "wangwu"
  c)smove
  语法:smove source destination member
  解释:将source中的member移动到destination
redis 127.0.0.1:6379> smembers tech   #smove前  
1) "wangwu"
  
redis 127.0.0.1:6379> smembers stu
  
1) "zhangsan01"
  
2) "wangwu"
  
3) "zhangsan"
  
redis 127.0.0.1:6379> smove stu tech zhangsan  #将zhangsan 从stu移动到tech
  
(integer) 1
  
redis 127.0.0.1:6379> smembers stu #smove后
  
1) "zhangsan01"
  
2) "wangwu"
  
redis 127.0.0.1:6379> smembers tech
  
1) "wangwu"
  
2) "zhangsan"
  4、其他
  a)并集
  语法:sunion key[key...]
  解释:多个set的并集
redis 127.0.0.1:6379> smembers stu  
1) "zhangsan01"
  
2) "wangwu"
  
redis 127.0.0.1:6379> sunion stu
  
1) "zhangsan01"
  
2) "wangwu"
  
redis 127.0.0.1:6379> smembers tech
  
1) "wangwu"
  
2) "zhangsan"
  
redis 127.0.0.1:6379> sunion stu tech
  
1) "zhangsan01"
  
2) "wangwu"
  
3) "zhangsan"
  b)把并集结果存储到set
  语法:sunionstore destination key [key ...]
  解释:求多个set并集,并把结果存储到destination
redis 127.0.0.1:6379> sunionstore union stu tech #把stu tech并集结果存储在union  
(integer) 3
  
redis 127.0.0.1:6379> smembers union
  
1) "zhangsan01"
  
2) "wangwu"
  
3) "zhangsan"
  c)交集
  语法:sinter key[key...]
  解释:多个set的交集
redis 127.0.0.1:6379> smembers stu  
1) "zhangsan01"
  
2) "wangwu"
  
redis 127.0.0.1:6379> smembers tech
  
1) "wangwu"
  
2) "zhangsan"
  
redis 127.0.0.1:6379> sinter stu tech
  
1) "wangwu"
  d)把交集结果存储到指定set
  语法:sinterstore destination key [key ...]
  解释:把多个set的交集结果存储到destination
redis 127.0.0.1:6379> sinterstore inter stu tech  
(integer) 1
  
redis 127.0.0.1:6379> smembers inter
  
1) "wangwu"
  e) set中在其他set中不存在member
  语法:sdiff key[key ...]
redis 127.0.0.1:6379>  
redis 127.0.0.1:6379> smembers stu
  
1) "zhangsan01"
  
2) "wangwu"
  
redis 127.0.0.1:6379> smembers tech
  
1) "wangwu"
  
2) "zhangsan"
  
redis 127.0.0.1:6379> sdiff stu tech
  
1) "zhangsan01"
  
redis 127.0.0.1:6379> sdiff tech stu
  
1) "zhangsan"


  f)把set中在其他set中不存在的member存储到新的set
  语法:sdiffstore key[key...]
redis 127.0.0.1:6379> sdiffstore diff stu tech  
(integer) 1
  
redis 127.0.0.1:6379> smembers diff
  
1) "zhangsan01"
  主要参考:
  http://redis.io/commands#set
  http://redis.io/topics/data-types
  Redis集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm
  Redis系列-安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm
  http://blog.csdn.net/love__coder/article/category/1299594



运维网声明 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-631555-1-1.html 上篇帖子: redis学习(3) - 列表类型 下篇帖子: redis zset-IT小黑兵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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