背景:我记不住那么多命令,又是Linux命令,又是Git命令,又是kubernetes的命令,又是maven命令,又是redis命令。所谓好记性不如烂笔头,记下来吧。

对于中文来说,可以使用 redis-cli --raw

一、string类型

二进制安全、最大1G、可以包含任何数据,都是以二进制的方式进行存储的

1. set  :  设定key和value的值

2. get  :  获取指定key的相应的value的值

3. setnx : 指定的 key 不存在时,为 key 设置指定的值,如果已经存在,则不执行操作

4. mset :  批量设定key和value

5. msetnx :  批量设定key和value,党指定的key不存在时为key设置指定的值,否则不进行任何操作。

6. getset : 修改某个key的value值,并返回其 旧值

7.  mget : 获取一个或多个key的值

8. setex :  为指定的 key 设置值及其过期时间。如果 key 已经存在, 将会替换旧的值,单位为秒

9. psetex :  作用同上一条命令,只是单位不同,为毫秒

10. strlen : 获取字符串值的长度。 当 key 不存在时,返回 0

11. setrange :  用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始,并返回修改后的字符串长度

12. getrange  :  返回key的字符串值的子字符串,左闭右闭 [start,end] 按照字节来进行

13. incr /incrby/incrbyfloat

      incr 对不存在的key是可以操作的,首先创建一个0值,然后自增

      incrby对不存在的key是无法操作的,会报错误

      incrbyfloat 会将无用的后缀零忽略掉,会将浮点变为整数。

14. decr/decrby : 将 key 中储存的数字值减一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decr 操作。

15. append : 在原有字符串后进行追加操作

16. setbit  : 用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)

其中的offset 是从左到右进行自增,也就是从高位到低位进行计数,并自增offset

17. getbit : 获取指定key的值的偏移量上的某位的值

# 1. set
127.0.0.1:6379> set name beijingtiananmen
OK
# 2. get
127.0.0.1:6379> get name
"beijingtiananmen"
# 3. setnx : 如果key不存在,则新建一个key/value,如果key存在,则不执行命令
127.0.0.1:6379> setnx name gugongbowuyuan
(integer) 0
127.0.0.1:6379> get name
"beijingtiananmen"
127.0.0.1:6379>

# 4. mset 多个key/value一起设置
127.0.0.1:6379> mset scenic1 beijingtiananmen scenic2 gugongbowuyuan scenic3 jingshangongyuan
OK

# 5. msetnx : 和上面第3个命令相似,区别在于msetnx是一个批量操作
127.0.0.1:6379> msetnx scenic1 changcheng scenic2 yiheyuan scenic3 yuanmingyuan
(integer) 0
# 都存在scenic1/scenic2/scenic3,所以不执行命令,还是原来的值
127.0.0.1:6379> mget scenic1 scenic2 scenic3
1) "beijingtiananmen"
2) "gugongbowuyuan"
3) "jingshangongyuan"

# 6. getset : 修改某个key的值,但设置后返回的是原来的旧值
127.0.0.1:6379> getset scenic1 beijingrenmindahuitang
"beijingtiananmen"
127.0.0.1:6379> get scenic1
"beijingrenmindahuitang"
# 假设 scenicXXX是一个不存在的key,则会创建一个新的key和value
127.0.0.1:6379> getset scenicXXX guojiabowuyuan
(nil)
127.0.0.1:6379> get scenicXXX
"guojiabowuyuan"

7. mget : 批量过去一些key的value,这个命令在第5条命令中有使用
127.0.0.1:6379> mget scenic1 scenic2 scenic3
1) "beijingtiananmen"
2) "gugongbowuyuan"
3) "jingshangongyuan"

8. setex : 设定一个key的有效期,单位为秒,注意格式 > setex key seconds value
127.0.0.1:6379> setex age 60 96
OK
127.0.0.1:6379> ttl age
(integer) 52
127.0.0.1:6379> ttl age
(integer) 49
ttl用于查看剩余多少秒

9. psetex : 设定一个key的有效期,单位为毫秒,注意格式 > setex key milliseconds value
127.0.0.1:6379> psetex age 60000 96
OK
127.0.0.1:6379> ttl age
(integer) 52
127.0.0.1:6379> ttl age
(integer) 49
ttl用于查看剩余多少秒

10. strlen : 查看一个key的value的长度
127.0.0.1:6379> get scenic1
"beijingrenmindahuitang"
127.0.0.1:6379> strlen scenic1
(integer) 22

11. setrange : 将字符串的某个位置开始进行替换,格式为: setrange key offset value
127.0.0.1:6379> setrange scenic1 7 guojiadajuyuan
(integer) 22
127.0.0.1:6379> get scenic1
"beijingguojiadajuyuang"

12. getrange : 截取某个字符串的值,功能类似substring,格式为: getrange key start end
127.0.0.1:6379> getrange scenic1 7 -1
"guojiadajuyuang"

13. incr/incrby/incrfloat
127.0.0.1:6379> set age 33
OK
127.0.0.1:6379> incr age
(integer) 34
127.0.0.1:6379> incrby age 10
(integer) 44
127.0.0.1:6379> incrbyfloat age 10.0
"54"

14. decr/decrby
127.0.0.1:6379> decr age
(integer) 53
127.0.0.1:6379> decrby age 10
(integer) 43

15. append 将新串追加到原有字符串后
127.0.0.1:6379> append age 20
(integer) 4
127.0.0.1:6379> get age
"4320"

16. setbit  格式为: setbit key offset value
# 从左往右,从高位至低位进行计数
# 这里的a的ascii码为 0110 0001 
# 这里的b的ascii码为 0110 0010
# 这里的c的ascii码为 0110 0011
127.0.0.1:6379> set num a
OK
127.0.0.1:6379> setbit num 6 1
(integer) 0
127.0.0.1:6379> get num
"c"
127.0.0.1:6379> setbit num 7 0
(integer) 1
127.0.0.1:6379> get num
"b"

17. getbit 格式为: getbit key offset
127.0.0.1:6379> getbit num 1