Redis 字符串详解

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方式数据备份与恢复

redis 持久化详解,RDB和AOF是什么?他们优缺点是什么?运行流程是什么?

redis 如何高效快速批量插入大量数据到redis中

Redis 列表详解

Redis 字符串详解

Redis 5种数据结构简介和对应的命令及代码示例


相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...