Redis数据类型之String数据类型
- Redis数据类型之String数据类型
-
- 1.SET/GET/APPEND/STRLEN:
- 2.INCR/DECR/INCRBY/DECRBY:
- 3.GETSET
- 4.SETEX:
- 5.SETNX:
- 6.MSET/MGET/MSETNX:
Redis数据类型之String数据类型
- 概述: String是redis最基本的类型,最大能存储512NB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等
1.SET/GET/APPEND/STRLEN:
192.168.199.40:6379> exists mykey #判断该键是否存在,存在返回1,否则返回0
(integer) 0
192.168.199.40:6379> append mykey "hello" #该键并不存在,因此append命令返回当前Value的长度
(integer) 5
192.168.199.40:6379> append mykey "world" #该键已经存在,因此返回追加后Value的长度
(integer) 11
192.168.199.40:6379> get mykey #通过get命令获取该键,以判断append的结果
"hello world"
192.168.199.40:6379> set mykey "this is a test"#通过set命令为键设置新值,并覆盖原有值
0K
192.168.199.40:6379> get mykey
"this is a test"
192.168.199.40:6379> strlen mykey#获取指定Key的字符长度
(integer) 14
2.INCR/DECR/INCRBY/DECRBY:
192.168.199.40:6379> set mykey 20 #设置Key的值为20
OK
192.168.199.40:6379> incr mykey #该Key的值递增1
(integer) 21
192.168.199.40:6379> decr mykey #该Key的值递减1
(integer) 20
192.168.199.40:6379> del mykey #删除已有键
(integer) 1
192.168.199.40:6379> decr mykey #对空值进行递减操作,其原值被设定为0,递减后的值为-1
(integer) -1
192.168.199.40:6379> del mykey
(integer) 1
192.168.199.40:6379> incr mykey #将该键的Value设置为不能转换为整型的普通字符串
(integer) 1
192.168.199.40:6379> set mykey hello
OK
192.168.199.40:6379> incr mykey
(error) ERR value is not an integer or out of range
192.168.199.40:6379> set mykey 10
OK
192.168.199.40:6379> decrby mykey 5 #减少指定的整数
(integer) 5
192.168.199.40:6379> incrby mykey 10 #增加指定的整数
(integer) 15
3.GETSET
192.168.199.40:6379> incr mycounter #将计数器的值原子性的递增1
(integer) 1
192.168.199.40:6379> getset mycounter 0 #在获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成
"1"
192.168.199.40:6379> get mycounter #查看设置后的结果
"0"
4.SETEX:
192.168.199.40:6379> setex mykey 15 "hello" #设置指定Key的过期时间为10秒。
OK
192.168.199.40:6379> ttl mykey#通过ttl命令查看一下指定Key的剩余存活时间(秒数),0表示已经过期,-1表示永不过期。
(integer) 4
192.168.199.40: 6379>get mykey #在该键的存活期内我们仍然可以获取到它的Value。
"hello"
192.168.199.40:6379>ttl mykey #该ttl命令的返回值显示,该Key已经过期。
(integer) 0
192.168.199.40:6379>get mykey #获取已过期的Key将返回nil。
(nil)
5.SETNX:
192.168.199.40:6379>del mykey #删除该键,以便于下面的测试验证。
(integer) 1
192.168.199.40:6379>setnx mykey "hello" #该键并不存在,因此setnx命令执行成功。
(integer) 1
192.168.199.40:6379> setnx mykey "world" #该键已经存在,因此本次设置没有产生任何效果。
(integer) 0
192.168.199.40: 6379>get mykey #从结果可以看出,返回的值仍为第一次设置的值。
"hello"
6.MSET/MGET/MSETNX:
192.168.199.40:6379> mset key1 "hello" key "world" #批量设置了key1和key2两个键。
OK
192.168.199.40:6379> mget key1 key2 #批量获取了key1和key2两个键的值。
1)"hello"
2)"world"
192.168.199.40:6379> msetnx key3 "hello" key4 "world" #批量设置了key3和key4两个键,因为之前他们并不存在,所以msetnx命令执行成功并返回1。
(integer) 1
192.168.199.40:6379> mget key3 key,
1)"hello"
2) "world"
192.168.199.40:6379> msetnx key3 "hello" key5 "world"
#批量设置了key3和key5两个键,但是key3已经存在,所以msetnx命令执行失败并返回0。
(integer) 0
redis 127-0.0.1:6379> mget key3 key5 #批量获取key3和key5,由于key5没有设置成功,所以返回nil。
1)"hello"
2)(nil)