redis的字符串可以存储3种类型的值:
字符串(byte string)
整数
浮点数
redis中的自增命令和自减命令
命令 | 用例和描述 |
incr | incr key-name——将键值存储的值加上1 |
decr | decr key-name——将键值存储的值减去1 |
incrby | incrby key-name amount——将键值存储的值加上整数amount |
decrby | decrby key-name amount——将键值存储的值减去整数amount |
incrbyfloat | incrbyfloat key-name amount——将键值存储的值加上浮点数amount,这个命令在Redis 2.6或以上的版本可用 |
python中redis的incr/decr操作的代码示例:
In [9]: import redis In [10]: conn = redis.Redis() In [11]: conn.get('key') # 获取不存在的键得到一个None值,终端不会显示这个值 In [12]: conn.incr('key') # 执行自增 Out[12]: 1 In [13]: conn.incr('key',15) # 相当于incrby Out[13]: 16 In [14]: conn.decr('key',5) # 相当于decrby Out[14]: 11 In [15]: conn.get('key') Out[15]: '11' In [16]: conn.set('key','13') Out[16]: True In [17]: conn.incr('key') Out[17]: 14
redis处理子串和二进制位的命令
命令 | 用例 | 描述 |
append | append key-name value | 将值value追加到给定键key-name当前存储的值的末尾 |
getrange | getrange key-name start end | 获取一个由偏移量start至偏移量end范围内所有字符串组成子串,包括start和end在内 |
setrange | setrange key-name offset value | 将从start偏移量开始的子串的设置为给定值 |
getbit | getbit key-name offset | 将字节串看作是二进制位串,并返回位串总偏移量为offset的二进制位的值 |
setbit | setbit key-name offset value | 将字节串看做二进制位串,并将位串中偏移量为offset的二进制位的值设置为value |
bitcount | bitcount key-name [start end] | 统计二进制位串里面值为1的二进制位的数量,如果给定了可选的start偏移量和end偏移量,那么只对偏移量指定范围内的二进制位进行统计 |
bitop | bitop operation dest-key key-name [key-name…] | 对一个或者多个二进制位串执行包括并(and)、或(or)、异或(xor)、非(not)在内的任意一种按位运算操作(bitwise operation),并将计算得出的结果保存在dest-key键里面 |
getrange和substr注意:
redis现在的getrange命令是由以前的substr命令改名而来的,因此,python客户端至今仍然可以使用substr()方法来获取子串,但如果读者使用的是2.6或者以上版本的redis,那么最好还是使用getrange()放来来获取子串。
redis的子串操作和二进制位置操作代码示例
# 将字符串‘hello’追加到目前并不存在的'new-string-key'键里 In [18]: conn.append('new-string-key','hello ') Out[18]: 6L # 返回字符串当前的长度 In [19]: conn.append('new-string-key','world!') Out[19]: 12L # 返回字符串当前的长度 # redis的索引以0为开始,在进行范围访问时,范围的终点默认也包含在这个范围之内 In [20]: conn.substr('new-string-key',3,7) Out[20]: 'lo wo' # 字符串‘lo wo’卫浴字符串‘hello world’的中间。 # setrange命令将h从小写变成大写 In [22]: conn.setrange('new-string-key','H') Out[22]: 12 # 返回字符串的当前长度 # setrange命令将w从小写变成大写 In [23]: conn.setrange('new-string-key',6,'w') Out[23]: 12 # setrange执行之后返回字符串的当前长度 In [24]: conn.get('new-string-key') Out[24]: 'Hello world!' # setrange可以用于代替字符串里已有的内容,又可以增长字符串。 In [25]: conn.setrange('new-string-key',11, ', how are you?') Out[25]: 25 In [26]: conn.get('new-string-key') Out[26]: 'Hello world, how are you?' # setbit对超出字符串长度的二进制位进行设置时,超出的部分会被填充为空字节 In [27]: conn.setbit('another-key',2,1) Out[27]: 0 # setbit会返回二进制位被设置之前的值 In [28]: conn.setbit('another-key',7,1) Out[28]: 0 In [29]: conn.get('another-key') # 通过将第2个进制位以及第7个进制位的值设置为1,键的值降为变"!",也就是编码为33的字符。 Out[29]: '!'
相关文章:
redis 持久化详解,RDB和AOF是什么?他们优缺点是什么?运行流程是什么?