文章目录
操作String类型数据
1.set & get
Redis以键值对的形式(key - value)存储String类型数据,set设置键和值,get获取指定键的值
127.0.0.1:6379> set name zhou
OK
127.0.0.1:6379> get name
zhou
2.exists & type
exists 判断是否存在指定的键名,返回1则存在,返回0则不存在;type返回数据的类型
127.0.0.1:6379> type name
string
127.0.0.1:6379> exists name
1
127.0.0.1:6379> exists age
0
3.append & strlen
append 在指定的值末尾追加字符串,系统返回追加后的字符串长度。如果当前被追加字符串的键不存在,则会直接创建该键,其值为追加值,此时相当于set功能;strlen 返回指定字符串的长度
127.0.0.1:6379> append name yiqi
8
127.0.0.1:6379> get name
zhouyiqi
127.0.0.1:6379> strlen name
8
127.0.0.1:6379> append age 20 #age在之前未被set创建
2
127.0.0.1:6379> get age #执行完append发现,age被创建
20
4.incr & decr
incr 实现加一功能,前提是字符串是数字的形式,这个功能可以应用于浏览量的递增——用户每浏览一次,则执行incr一次;对应的,decr 实现减一功能。
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> incr views
1
127.0.0.1:6379> incr views
2
127.0.0.1:6379> get views
2
127.0.0.1:6379> decr views
1
127.0.0.1:6379> decr views
0
127.0.0.1:6379> decr views
-1
127.0.0.1:6379> get views
-1
4.incrby & decrby
incrby 实现加上某个步长的功能,;对应的,decrby 实现减某个步长功能。
127.0.0.1:6379> incrby views 10
9
127.0.0.1:6379> incrby views 10
19
127.0.0.1:6379> decrby views 9
10
127.0.0.1:6379> decrby views 9
1
5.getrange
getrange 获取字符串中的某一段。
127.0.0.1:6379> set name zhouyiqi
OK
127.0.0.1:6379> getrange name 0 3 #下标是从0开始的
zhou
127.0.0.1:6379> getrange name 0 4 #截取字符串 [0 4]
zhouy
127.0.0.1:6379> getrange name 3 5 #截取字符串 [3 5]
uyi
127.0.0.1:6379> getrange name 0 -1#[0 -1]截取整个字符串
zhouyiqi
6.setrange
setrange 替换字符串中的某一部分
127.0.0.1:6379> set name zhouyiqi
OK
127.0.0.1:6379> setrange name 1 xxx #1为字符串xxx插入的起始点下标,下标也是从0开始记的
8
127.0.0.1:6379> get name
zxxxyiqi
7.setex & ttl
setex(set with expire) 设置字符串键值对,并规定其在多少秒后消失。ttl 可以查看其剩余时间。这个命令可以用于去存放session和cookie里的数据,或者验证码。
127.0.0.1:6379> setex name 10 zhouyiqi
OK
127.0.0.1:6379> ttl name
6
127.0.0.1:6379> ttl name
2
127.0.0.1:6379> ttl name # 当返回-2的时候,代表name已经消失了
-2
127.0.0.1:6379> get name # 此时去获取name的值,返回为空
8.setnx
setnx(set if not exit) 不同于set命令。set设置完键值对后,如果再用set为相同的键赋值,该值会覆盖前值,如下图
127.0.0.1:6379> set name 123
OK
127.0.0.1:6379> get name
123
127.0.0.1:6379> set name 12
OK
127.0.0.1:6379> get name
12
而setnx则不同,第二次用setnx为相同的键赋值不会成功,它会先判断当前键是否存在,如果存在,则赋值不成功。这一特性使得setnx在分布式锁里面常常被应用到。
127.0.0.1:6379> setnx name 123
1
127.0.0.1:6379> setnx name 12
0 #返回了0,说明赋值操作不成功
127.0.0.1:6379> get name
123 #返回值还是123
9.mset & mget & msetnx
mset ,mget分别代表批量设置字符串键值对,批量获取字符串字符串键值对;msetnx 会先判断要设置的键是否存在,如果存在,则该操作不会执行成功。msetnx 具有原子性,即只要有一个键是存在的,则和它一起的其它键都不会设置成功。
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys * #keys *返回所有的键
k1
k2
k3
127.0.0.1:6379> mget k1 k2 k3
v1
v2
v3
127.0.0.1:6379> mget k1 k2 k3
v1
v2
v3
127.0.0.1:6379> msetnx k1 v2 k4 v4 #k1键是存在的
0 #所以执行不成功
127.0.0.1:6379> get k4
#msetnx执行不成功,所有k4的value为空
127.0.0.1:6379> keys * #查看键,发现没有k4,又一次证明了msetnx的原子性
k1
k2
k3
1042

被折叠的 条评论
为什么被折叠?



