Redis:String字符串常用指令

1.设置值

set {key name} {value}  #设置值

2.获得值

get {key name}

key *  #获取所有key

3. expire {key name}  {时间常量}  #过期时间

 exists {key name} #显示值是否存在

4.尾部追加

append {key name}  #如果当前key不存在,就相当于set key

5.获取值长度

strlen {keyname}

6.值增加/减命令

incr #自增1  decr #减少  

incr {key name} {value} 增加

decr {key name} {value} 减少

7.range 范围

7.1 getrange 截取字符串(get range

getrange {key name} {start} {end}  #起始位置和结束位置,当结束位置为-1时相当与get方法

 

7.2 setrange 修改字符串(set range

setrange {key name} {start} {value} #已什么起始位置基础去修改字符串

8. setex (set with expire)  #设置过期时间  

格式:setex {key name} {value} {时间常量}  

例子:setc key1 nnn 20  #设置键名为key1值为nnn的数据过期时间是20(查看过期剩余时间用 ttl {key name}指令查看)

9. setnx set if not exist   #不存在时在设置(在分布式锁中会常常使用)

格式:setnx {key name} {value}

注意:不存在时会return一个新版本号,失败则返回当前版本号如Integer 0

10. mset  #批量设置值

格式:mset {key name} {value} {key name} {value} {key name} {value} ~~~~

11.mget  # 批量获取值

格式:mget {key name} {key name} {key name} ~~~~

注意:批量获取和设置操作是原子性操作,要么都成功,要么都失败

12.对象属性设置

格式1set {key name} {json格式}

例子:127.0.0.1:6379> set user:1 {name:gou,age:18}  #设置一个keyuser:1的对象,vlauejson格式存储

重点:在redis中设置key值时,允许要’ : ‘来设置树级结构

也可以用批量设置的方式存储对象数据

格式: mset user:3:name cl user:3:age:18

   mget user:3:name user:3:age]

注意:两者的区别,格式1时以user1作为keyvalue都被json格式封装在里面

   格式2,就是按照批量处理的方式去getset的,只不过设置了树级(层级)结构了

13.getset命令 #先get后set(更新操作)

格式:getset {key name} {value}  #如果当前数据库没有指定的key那么就返回'nil'如果有就覆盖原有的值,相当于是一个更新的操作

拓展:1.CAS,比较并交换,与getset相似,数据结构是相通的,无锁算法实现的同步,即是一个原子性的操作

   2.自旋锁,就是一个工作机制与cas相似的同步锁机制,即当一个线程获取锁时,该锁已经被其他锁占用了,那么当前线程会进入忙循环状态(相当于while循环),不断的去询问锁是否被释放,知道获取成功才会跳出循环状态; 

    

 

原文地址:https://www.cnblogs.com/CL-King/p/14545727.html