加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Redis 字符串详解

发布时间:2020-12-16 04:39:21 所属栏目:安全 来源:网络整理
导读:redis的字符串可以存储3种类型的值: 字符串(byte string) 整数 浮点数 redis中的自增命令和自减命令 命令 用例和描述 incr incr key-name——将键值存储的值加上1 decr decr key-name——将键值存储的值减去1 incrby incrby key-name amount——将键值存

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种数据结构简介和对应的命令及代码示例


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读