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

[经验分享] Redis 基础

[复制链接]

尚未签到

发表于 2018-11-5 10:56:45 | 显示全部楼层 |阅读模式
  一、获得键名列表
  127.0.0.1:6379> KEYS *
  (empty list or set)
  127.0.0.1:6379> set bar 1
  OK
  127.0.0.1:6379> KEYS *
  1) "bar"
  KEYS ×列出redis所有的键,由于数据库开始并没有任何键所以为空。在添加bar后再使用KEYS就可以列出bar这个键
  判断key是否存在:
  127.0.0.1:6379> EXISTS bar
  (integer) 1
  127.0.0.1:6379> EXISTS nobar
  (integer) 0
  删除key:
  127.0.0.1:6379> DEL bar
  (integer) 1
  127.0.0.1:6379> DEL bar
  (integer) 0
  返回1是成功,0是由于key值不存在。
  利用xargs技巧:
  redis-cli KEYS "user:*" | xargs redis-cli DEL,这句性能并不是是否理想,性能更好的删除语句:
  redis-cli DEL `redis-cli KEYS "user:*"`
  获得key数据类型:
  127.0.0.1:6379> SET foo 1
  127.0.0.1:6379> TYPE foo
  string
  127.0.0.1:6379> LPUSH bar 1
  127.0.0.1:6379> TYPE bar
  list
  字符串:
  赋值与取值:
  SET key value
  GET key
  递增:INCR key
  增加指定的整数:INCRBY key number
  减少指定数:DECR key (减一) , DECRBY key number
  增加指定浮点数: INCREBYFLOAT key increment
  向尾部追加值: APPEND key value
  获得字符串长度 STRLEN key
  同时获得多个键值:MGET key [key ...]
  MSET key value [key value ... ]
  127.0.0.1:6379> MSET key1 hello key2 world key3 ray
  OK
  127.0.0.1:6379> GET key2
  "world"
  127.0.0.1:6379> MGET key1 key2 key3
  1) "hello"
  2) "world"
  3) "ray"
  INCR:            INCR key-name 将键存储的值加1
  DECR:            DECR key-name 将存储的值减1
  INCRBY:            INCRBY key-name amount 将键存储的值加上一个整数amount
  DECRBY:            DECRBY key-name amount 将键存储的值减去整数amount
  INCRBYFLOAT:    INCRBYFLOAT key-name amount 将键存储的值加上浮点输amount
  位操作:GETBIT key offset
  SETBIT  key offset value
  BITCOUNT key start end
  BITOP    operation destkey key [key...]
  APPEND:            APPEND key-name value 将值value 追加到给点的key-name当前存储的值的末尾
  GETRANGE:        GETRANGE key-name start end 获取一个由偏移量start至end范围内所有字符串组成的子串,包括start和end在内
  SETRANGE:        SETRANGE key-name offset value 将从start偏移开始的子串设置为给定值
  GETBIT:            GETBIT key-name offset 将字节串看作是二进制串(bit string)并返回位串中偏移量为offset的二进制位的值
  SETBIT:            SETBIT key-name offset value 将字节串看作是二进制位串,并将位串中偏移为offset的二进制位的值设置为value
  BITCOUNT:        BITCOUNT key-name start end 统计二进制位串里值为1的二进制位的数量,如果指定了可选的start和end偏移量那么只对偏移量范围内的二进制位进行统计
  BITOP:            BITOP operation dest-key kay-name  对一个或多个二进制位串执行:AND,OR,XOR,NOT在内的任意一种按位运算操作。并将计算结果保存到dest-key
  
  
  例子:
127.0.0.1:6379[3]> APPEND ns 'hello'  
(integer) 5
  
127.0.0.1:6379[3]> APPEND ns 'world'
  
(integer) 10
  
127.0.0.1:6379[3]> GETRANGE ns 3 7
  
"lowor"
  
127.0.0.1:6379[3]> SETRANGE ns 6 'W'
  
(integer) 10
  
127.0.0.1:6379[3]> SETRANGE ns 0 'H'
  
(integer) 10
  
127.0.0.1:6379[3]> get ns
  
"HellowWrld"
  
127.0.0.1:6379[3]> SETBIT ns2 2 1
  
(integer) 0
  
127.0.0.1:6379[3]> SETBIT ns2 7 1
  
(integer) 0
  
127.0.0.1:6379[3]> get ns2
  二、散列:
  赋值与取值:
  HSET key field value
  HGET key filed
  HMSET key field value [filed value ... ]
  HMGET key field [field ... ]
  HGETALL key
  127.0.0.1:6379> HSET car price 500
  (integer) 1
  127.0.0.1:6379> HSET car name BMW
  (integer) 1
  127.0.0.1:6379> HGET car name
  "BMW"
  127.0.0.1:6379> HGET car price
  "500"
  设置多个键值:
  HMSET  key field1 value1 filed2 value2
  HMGET获得多个字段值:
  127.0.0.1:6379> HMGET car price name
  1) "500"
  2) "BMW"
  HMGETALL car 获取所有字段和字段值
  127.0.0.1:6379> HGETALL car
  1) "price"
  2) "500"
  3) "name"
  4) "BMW"
  判断字段是否存在: HEXISTS key field
  127.0.0.1:6379> HEXISTS car model
  (integer) 0
  127.0.0.1:6379> HSET car model c200
  (integer) 1
  127.0.0.1:6379> HEXISTS car model
  (integer) 1
  字段不存在时赋值: HSETNX key field value ,如果字段存在,HSETNX将不执行任何操作。
  127.0.0.1:6379> HSETNX car model e400
  (integer) 0
  127.0.0.1:6379> HGET car model
  "c200"
  增加数字:HINCRBY key field increment
  删除字段: HDEL key filed [filed ... ]
  命令拾遗:
  之获取字段或字段值:
  HKEYS key
  HVALS key
  HVALS 获取键中所有的字段值,例如:
  127.0.0.1:6379> HVALS car
  1) "500"
  2) "BMW"
  3) "c200"
  获得字段数量:HLEN key
  列表类型:
  左边增加元素:    LPUSH key value [value ... ]
  右边增加元素:    RPUSH key value [value ... ]
  127.0.0.1:6379> LPUSH numbers 1
  (integer) 1
  127.0.0.1:6379> LPUSH numbers 2 3
  (integer) 3
  127.0.0.1:6379> RPUSH numbers 0 -1
  (integer) 5
  numbers 数据如下:
  [ 3 2 1 0 -1 ]
  从列表两端弹出元素:
  LPOP key,弹出左边第一个元素
  RPOP key,弹出右边第一个元素
  LEN key 获取列表元素中的元素个数
  LRANGE key start stop , 获得列表片段(从0开始),stop值大于实际范围则会返回右边所有元素
  127.0.0.1:6379> LRANGE numbers 0 2
  1) "2"
  2) "1"
  3) "0"
  127.0.0.1:6379> LRANGE numbers 0 200
  1) "2"
  2) "1"
  3) "0"
  删除列表中指定的值:
  LREM key count value,删除前count个值为value的元素。当count大于0时,LREM从列表左边开始删除,当count小于0时,LREM从右边开始删除前count个value。
  当count等于0,LREM会删除所有值为value的元素127.0.0.1:6379> RPUSH numbers 2
  (integer) 4
  127.0.0.1:6379> LRANGE numbers 0 -1
  1) "2"
  2) "1"
  3) "0"
  4) "2"
  127.0.0.1:6379> LREM numbers -1 2
  (integer) 1
  127.0.0.1:6379> LRANGE numbers 0 -1
  1) "2"
  2) "1"
  3) "0"
  命令拾遗:
  获取/设置指定所以的元素值:LINDEX key value    返回指定索引的元素,索引从0开始
  LSET key index value     将索引为index的元素赋值为value
  127.0.0.1:6379> LINDEX numbers 0
  "2"
  127.0.0.1:6379> LINdEX numbers -1
  "0"
  127.0.0.1:6379> LSET numbers 1 7
  OK
  127.0.0.1:6379> LINdEX numbers 1
  "7"
  只保留列表指定片段
  LTRIM key start end
  LTRIM 删除指定范围之外的所有元素
  127.0.0.1:6379> LRANGE numbers 0 -1
  1) "2"
  2) "7"
  3) "0"
  127.0.0.1:6379> LTRIM numbers 1 2
  OK
  127.0.0.1:6379> LRANGE numbers 0 -1
  1) "7"
  2) "0"
  向列表插入元素:
  LINSERT key BEFORE|AFTER pivot value
  127.0.0.1:6379> LRANGE numbers 0 -1
  1) "7"
  2) "0"
  127.0.0.1:6379> LINSERT numbers AFTER 7 3
  (integer) 3
  127.0.0.1:6379> LRANGE numbers 0 -1
  1) "7"
  2) "3"
  3) "0"
  127.0.0.1:6379> LINSERT numbers BEFORE 7 1
  (integer) 4
  127.0.0.1:6379> LRANGE numbers 0 -1
  1) "1"
  2) "7"
  3) "3"
  4) "0"
  将元素从一个列表转到另一个列表
  RPOPLPUSH source destination
  RPUSH:            RPUSH key-name value 将一个或者多个value推入列表的右端
  LPUSH:            LPUSH key-name value 将一个或者多个value推入列表的左端
  RPOP:            RPOP key-name 移除并返回最右端的元素
  LPOP:            LPOP key-name 移除并返回最左端的元素
  LINDEX:            LINDEX key-name offset 返回列表偏移量为offset的元素
  LRANGE:            LRANGE key-name start end 返回列表从start偏移到end范围内所有元素.其中偏移量start和end的元素也包含在被返回的元素之内
  LTRIM:            LTRIM key-name start end 对列表进行修剪只保留从start 到 end范围内的元素.其中偏移量为start和end的元素会保留下来
  集合类型:
  增加/删除元素:
  SADD key member [member ... ]
  SREM key member [ member ... ]
  127.0.0.1:6379> SADD letters a
  (integer) 1
  127.0.0.1:6379> SADD letters a b c
  (integer) 2
  127.0.0.1:6379> SMEMBERS letters
  1) "b"
  2) "a"
  3) "c"
  127.0.0.1:6379> SREM lettes c
  (integer) 0
  127.0.0.1:6379> SMEMBERS letters
  1) "b"
  2) "a"
  3) "c"
  判断元素是否在集合中:
  SISMEMBER key member
  127.0.0.1:6379> SISMEMBER letters a
  (integer) 1
  127.0.0.1:6379> SISMEMBER letters d
  (integer) 0
  集合运算:
  差:SDIFF key [key ...]
  交:SINTER key [key ...]
  并:SUNION key [key ...]
  127.0.0.1:6379> SADD setA 1 2 3
  (integer) 3
  127.0.0.1:6379> SADD setB 2 3 4
  (integer) 3
  127.0.0.1:6379> SDIFF setA setB
  1) "1"
  127.0.0.1:6379> SDIFF setB setA
  1) "4"
  127.0.0.1:6379> SINTER setA setB
  1) "2"
  2) "3"
  127.0.0.1:6379> SUNION setA setB
  1) "1"
  2) "2"
  3) "3"
  4) "4"
  命令拾遗:
  获取集合中元素个数:
  SCARD key
  127.0.0.1:6379> SCARD setA
  (integer) 3
  集合运算并将结果存储:
  SDIFFSTORE destination key [key ...]
  SINTERSTORE destination key [key ...]
  SUNIONSTORE destination key [key ...]
  随机获取集合元素:
  SRANDMEMBER key [count]
  127.0.0.1:6379> SRANDMEMBER letters 3
  1) "a"
  2) "b"
  3) "c"
  从集合中弹出一个元素:
  SPOP key
  SADD:            SADD key-name item  将一个或者多个元素添加到集合里面,并返回被添加元素当原中原本部存在于集合里的元素数量.
  SREM:            SRM key-name item  从集合里面移除一个或多个元素,并返回被移除元素的数量.
  SISMEMER:        SISMEMER key-name 返回集合包含的所有元素
  SRANDMEMBER:    SRANDMEMBER key-name [count] 从集合里随机返回一个或多个元素,当count为正数时,命令返回随机元素不重复,负数时可能会重复
  SPOP:            SPOP key-name随机地移除集合中的一个元素,并返回被移除的元素
  SMOVE:            SMOVE source dest item 如果集合source 包含元素item,那么从集合source里面移除item,并将元素item添加到集合dest中.
  集合运算:
  SDIFF:            SDIFF key-name1 key-name2 差集
  SDIFFSTORE:        SDIFF dest key-name1 key-name2 差集,并把结果保存在dest
  SINTER:            SINTER key-name1 key-name2 交集运算
  SINTERSTORE:    SINTERSTORE: dest key-name1 key-name2 交集运算,并把结果存储到dest
  SUNION:            SUNION key-name1 key-name2 并集
  SUNIONSTORE:    SUNIONSTORE dest key-name1 key-name2 并集,并把结果存储到dest
  有序集合:
  增加元素:
  ZADD key score member [score member ... ]
  127.0.0.1:6379> ZADD scoreboard 89 Tom 67 Peter 90 David 100 Ray
  (integer) 4
  127.0.0.1:6379> ZADD scoreboard 76 Peter
  (integer) 0
  127.0.0.1:6379> ZADD testborard 17E+307 a
  (integer) 1
  127.0.0.1:6379> ZADD testboard 1.5 b
  (integer) 1
  获取元素:
  127.0.0.1:6379> ZSCORE testboard b
  "1.5"
  127.0.0.1:6379> ZSCORE scoreboard Tom
  "89"
  127.0.0.1:6379> ZSCORE scoreboard Ray
  "100"
  获得排名在某个范围元素列表:
  ZRANGE key start stop [WITHSCORES]  从分数值小到大排序
  ZREVRANGE key start stop [WITHSCORES]    按分数值从大到小排序
  127.0.0.1:6379> ZREVRANGE scoreboard 0 -1
  1) "Ray"
  2) "David"
  3) "Tom"
  4) "Peter"
  127.0.0.1:6379> ZRANGE scoreboard 0 -1
  1) "Peter"
  2) "Tom"
  3) "David"
  4) "Ray"
  127.0.0.1:6379> ZRANGE scoreboard 0 -1 WITHSCORES
  1) "Peter"
  2) "76"
  3) "Tom"
  4) "89"
  5) "David"
  6) "90"
  7) "Ray"
  8) "100"
  获取指定分数范围的元素
  ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
  倒序:ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
  127.0.0.1:6379> ZRANGEBYSCORE scoreboard 60 70
  (empty list or set)
  127.0.0.1:6379> ZRANGEBYSCORE scoreboard 60 80
  1) "Peter"
  127.0.0.1:6379> ZRANGEBYSCORE scoreboard (76 +inf
  1) "Tom"
  2) "David"
  3) "Ray"
  127.0.0.1:6379> ZRANGEBYSCORE scoreboard 76 +inf
  1) "Peter"
  2) "Tom"
  3) "David"
  4) "Ray"
  右最高分的前三人:
  127.0.0.1:6379> ZREVRANGEBYSCORE scoreboard 100 0 LIMIT 0 3
  1) "Ray"
  2) "David"
  3) "Tom"
  增加元素分数:
  ZINCRBY key increment member
  127.0.0.1:6379> ZINCRBY scoreboard 4 Jerry
  "4"
  127.0.0.1:6379> ZREVRANGEBYSCORE scoreboard 100 0  WITHSCORES
  1) "Ray"
  2) "100"
  3) "David"
  4) "90"
  5) "Tom"
  6) "89"
  7) "Peter"
  8) "76"
  9) "Jerry"
  10) "4"
  获得集合元素的数量:
  ZCARD key
  127.0.0.1:6379> ZCARD scoreboard
  (integer) 5
  获得指定分数范围内的元素个数:
  ZCOUNT key min max
  127.0.0.1:6379> ZCOUNT scoreboard 90 100
  (integer) 2
  删除一个或多个元素
  ZREM key  member [member ...]
  127.0.0.1:6379> ZREM scoreboard Peter
  (integer) 1
  127.0.0.1:6379> ZCARD scoreboard
  (integer) 4
  按照排名范围删除元素:
  ZREMRANGEBYRANK key start stop
  127.0.0.1:6379> ZADD testRem 1 a 2 b 3 c 4 d 5 e 6 f
  (integer) 6
  127.0.0.1:6379> ZREMRANGEBYRANK testRem 0 2
  (integer) 3
  127.0.0.1:6379> ZRANGE testRem 0 -1
  1) "d"
  2) "e"
  3) "f"
  获得元素的排名:
  ZRANK key member
  ZREVRANK key member
  127.0.0.1:6379> ZRANK scoreboard Ray
  (integer) 3
  127.0.0.1:6379> ZREVRANK scoreboard Ray
  (integer) 0
  计算有序集合的交集:
  ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
  127.0.0.1:6379> ZADD sortedSets1 1 a 2 b
  (integer) 2
  127.0.0.1:6379> ZADD sortedSets2 10 a 30 b
  (integer) 2
  127.0.0.1:6379> ZINTERSTORE Result 2 sortedSets1 sortedSets2
  (integer) 2
  127.0.0.1:6379> ZRANGE Result 0 1 WITHSCORES
  1) "a"
  2) "11"
  3) "b"
  4) "32"
  127.0.0.1:6379> ZINTERSTORE Result 2 sortedSets1 sortedSets2 AGGREGATE MIN
  (integer) 2
  127.0.0.1:6379> ZRANGE Result 0 1 WITHSCORES
  1) "a"
  2) "1"
  3) "b"
  4) "2"
  127.0.0.1:6379> ZINTERSTORE Result 2 sortedSets1 sortedSets2 AGGREGATE MAX
  (integer) 2
  127.0.0.1:6379> ZRANGE Result 0 1 WITHSCORES
  1) "a"
  2) "10"
  3) "b"
  4) "30"



运维网声明 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-631028-1-1.html 上篇帖子: redis 集群 下篇帖子: 互联网架构设计之Redis篇-【Redis的概述】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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