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

[经验分享] Redis String类型数据常用的16条命令总结

[复制链接]

尚未签到

发表于 2016-12-19 10:42:00 | 显示全部楼层 |阅读模式
Redis String类型数据常用的16条命令总结

  

  描述:String 类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或序列化对象。

    常用方法:
1, set方法:
set <key> <value>    设置key的值为value
(1)对不存在的key使用set:
redis 127.0.0.1:6379> set name 'zhangsan'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
(2)对已存在的key使用set,更换key的值:redis 127.0.0.1:6379> set name 'lisi'
OK
redis 127.0.0.1:6379> get name
"lisi"
2,setnx 方法:
  setnx <key>  <value>   当key不存在时,设置key的值为value,设置成功,返回1,设置失败,返回0.

redis 127.0.0.1:6379> setnx name 'wangwu'
(integer) 0
redis 127.0.0.1:6379> get name
"lisi"
redis 127.0.0.1:6379> setnx name2 'wangwu'
(integer) 1
redis 127.0.0.1:6379> get name2
"wangwu"
3,setex 方法:

setex <key> <seconds> <value>  设置key的值为value,过期时间为seconds(单位为秒).如果key已经存在,

则会覆盖其值。过期之后,返回的是为nil.redis 127.0.0.1:6379> setex name 3 'zhangsan'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> get name
(nil)
redis 127.0.0.1:6379> setex name 30 'zhangsan'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> setex name 30 'lisi'
OK
redis 127.0.0.1:6379> get name
"lisi"4,setrange方法:

setrange <key> <offset> <value>  用 value 参数覆盖给定 key 所储存的字符串值,下标从0开始,偏移量从 offset 开始。如果key不存在,则当做空白字符串处理。此命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充。注意你能使用的最大偏移量是
2^29-1(536870911) ,因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内。如果你需要使用比这更大的空间,你可以使用多个 key 。redis 127.0.0.1:6379> set name 'zhangsan'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> setrange name 5 '_si'
(integer) 8
redis 127.0.0.1:6379> get name
"zhang_si"
redis 127.0.0.1:6379> get name3
(nil)
redis 127.0.0.1:6379> setrange name3 4 'lisi'
(integer) 8
redis 127.0.0.1:6379> get name3
"\x00\x00\x00\x00lisi"
redis 127.0.0.1:6379>


5,mset方法:

mset <key> <value> [<key>  <value> ...]  同时设置多个key-value对,如果key已经存在,则会覆盖以前的值。redis 127.0.0.1:6379> get name
"zhang_si"
redis 127.0.0.1:6379> mset name 'zhangsan' name2 'lisi' name3 'wangwu'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> get name2
"lisi"
redis 127.0.0.1:6379> get name3
"wangwu"
redis 127.0.0.1:6379>


6,msetnx方法:

msetnx <key> <value> [<key>  <value> ...]  类似与mset方法,同时设置多个key-value对,当且仅当所给定的key都不存在时。如果操作成功,返回1,失败返回0.redis 127.0.0.1:6379> set age 12
OK
redis 127.0.0.1:6379> get age
"12"
redis 127.0.0.1:6379> msetnx age 14 age1 34 age2 55
(integer) 0
redis 127.0.0.1:6379> get age1
(nil)
redis 127.0.0.1:6379> get age
"12"
redis 127.0.0.1:6379> msetnx key1 'hello' key2 'word'
(integer) 1
redis 127.0.0.1:6379> get key1
"hello"
redis 127.0.0.1:6379> get key2
"word"
redis 127.0.0.1:6379>


7,append方法:

append <key> <value> 将value追加到原来的key值之后,如果key本不存在,则默认创建一个key-value对。操作成功返回1,失败返回0.redis 127.0.0.1:6379> set name 'zhangshan'
OK
redis 127.0.0.1:6379> get name
"zhangshan"
redis 127.0.0.1:6379> append name ' is 12.'
(integer) 16
redis 127.0.0.1:6379> get name
"zhangshan is 12."
redis 127.0.0.1:6379> get addr
(nil)
redis 127.0.0.1:6379> append addr '32 env.'
(integer) 7
redis 127.0.0.1:6379> get addr
"32 env."
redis 127.0.0.1:6379>


8 ,get 方法:

get <key> 取出 key的值。

9, mget 方法:

mget <key> [<key>...] 取出多个key的值。如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil。redis 127.0.0.1:6379> mget name name1  name2 name3
1) "zhangshan is 12."
2) (nil)
3) "lisi"
4) "wangwu"
redis 127.0.0.1:6379>


10, getrange 方法:

getrange <key> <start> <end> 获取key对应值的子字符串,从偏移量start到end之间的串(包含start和end),value最左边的一个字符的索引为0以此类推,最后一个字符的索引为字符串的总长度减一,反过来类似。这与Python中的切片操作及其类似。如,字符串"zhangsan"对应的正向下标如下图中的下标一所示,反向下标如下图中的下标二所示。
  


下标一:01234567
zhangsan
下标二:0-7-6-5-4-3-2-1

redis 127.0.0.1:6379> set name 'zhangsan'
OK
redis 127.0.0.1:6379> getrange name 0 4
"zhang"
redis 127.0.0.1:6379> getrange name 0 20
"zhangsan"
redis 127.0.0.1:6379> getrange name 0 -1
"zhangsan"
redis 127.0.0.1:6379>


11,getset方法:

getset <key> <value> 设定key的值为value,并返回key的旧值,当key的旧值不存在时,返回nil。redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> getset name 'lisi'
"zhangsan"
redis 127.0.0.1:6379> get name
"lisi"
redis 127.0.0.1:6379> get code
(nil)
redis 127.0.0.1:6379> getset code 'hello'
(nil)
redis 127.0.0.1:6379> get code
"hello"
redis 127.0.0.1:6379>


12, strlen 方法:

strlen <key> 返回key的长度,如果key的值不存在时,返回0.redis 127.0.0.1:6379> get name
"lisi"
redis 127.0.0.1:6379> strlen  name
(integer) 4
redis 127.0.0.1:6379> get key0
(nil)
redis 127.0.0.1:6379> strlen key0
(integer) 0


13,incr 方法:

incr <key> 将key的值加1。如果key的值不存在,则默认设置key的值为0,调用一次,增加一次,如果key的值不是整数类型,则返回一个错误。redis 127.0.0.1:6379> get name
"lisi"
redis 127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
redis 127.0.0.1:6379> set name 5
OK
redis 127.0.0.1:6379> incr name
(integer) 6
redis 127.0.0.1:6379> get name
"6"
redis 127.0.0.1:6379> get key0
(nil)
redis 127.0.0.1:6379> incr key0
(integer) 1
redis 127.0.0.1:6379> incr key0
(integer) 2
redis 127.0.0.1:6379> get key0
"2"
redis 127.0.0.1:6379>


14, decr 方法:

decr <key> 类似与incr方法,将key的值减1。如果key的值不存在,则默认设置key的值为0,调用一次,减一次,如果key的值不是整数类型,则返回一个错误。redis 127.0.0.1:6379> get name
"6"
redis 127.0.0.1:6379> decr name
(integer) 5
redis 127.0.0.1:6379> decr name
(integer) 4
redis 127.0.0.1:6379> decr key9
(integer) -1
redis 127.0.0.1:6379>


15,incrby 方法:

incrby<key> <increment> 类似与decr方法,将key的值增加增量increment。同理,错误的类型任然返回错误。如果key值不存在,则默认为0后进行操作。redis 127.0.0.1:6379> set count 20
OK
redis 127.0.0.1:6379> get count
"20"
redis 127.0.0.1:6379> incrby count 40
(integer) 60
redis 127.0.0.1:6379> get count
"60"
redis 127.0.0.1:6379> get count1
(nil)
redis 127.0.0.1:6379> incrby count1 30
(integer) 30
redis 127.0.0.1:6379> get count1
"30"16,decrby 方法:

decrby <key> <decrement> 类似与decr方法,将key的值减去增量decrement。同理,错误的类型任然返回错误。如果key值不存在,则默认为0后进行操作。redis 127.0.0.1:6379> set count 20
OK
redis 127.0.0.1:6379> decrby count 4
(integer) 16
redis 127.0.0.1:6379> get count2
(nil)
redis 127.0.0.1:6379> decrby count2 10
(integer) -10
redis 127.0.0.1:6379>

运维网声明 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-316339-1-1.html 上篇帖子: 中间件之Twemproxy Redis 下篇帖子: redis 3.0的集群部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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