Redis中String类型相关命令

本文详细介绍了Redis中String类型,包括其在键值对中的应用、创建方式如SET和MGET,以及字符串操作如INCR、DECR、追加、获取子串等。特别提到了字符串编码和存储小数的问题。后续将探讨哈希类型。
摘要由CSDN通过智能技术生成

上一篇关于Redis的文章中讲述了,一些Redis中的通用命令。我们也知道了,Redis中的数据都是以键值对形式存在的。key的话就是String,这篇文章我们重点讲述一下Value的类型

1. string

Redis中Value的一种常见类型就是string了,他可以存字符串,也可以存二进制数据(视频,图片,音频等等)但是不推荐用Redis存储二进制数据因为Redis中string规定了大小512mb

常见的创建字符串的方式为

set key value [ ex seconds | px seconds ]  [ NX | XX ]

  • set key value (创建一个Value类型为string的键值对)
  • set key value ex seconds (ex设置这个键值对的过期时间 单位秒)
  • set key value px seconds (px也是设置键值对的过期时间 单位是毫秒)
  • set key value ex seconds NX | XX   (NX表示如果key不存在才设置,如果key存在,则不设置。XX表示只有key存在了才设置,两者是互斥关系,不能同时写)

这里教大家一个 快速丢掉工作的小技巧 就是一个删库跑路的小技巧。

FLUSHALL 非常好用 特别是在公司的电脑上,使用后就删除redis中全部的键值对。

  1. mset key1 value1 [key2 value2]....
  2. mget key1 key2....
    一次性操作多个键值对的set和get

这里的mset和mget的作用就不需要说了吧 他是服务器客户端模型的程序,一次操作肯定会比多次操作的速度快,但是一次传送的数据也不要太多,因为他同时是单线程的程序,一次传输太多数据很容易导致redis阻塞。

时间复杂度O(n)此处的n不是redis中整个键值对的数量,而是给了多少条指令就是几,所以也可以叫做O(1)。

  • SETNX 不存在才能设置,存在则设置失败
  • SETEX key seconds value 设置key的过期时间 单位为秒
  • PSETEX key seconds value 设置key的过期时间 单位为毫秒
    pttl key 查询毫秒级别的过期时间

下面几组是新的命令

  • incr key  针对value + 1 (返回值为+1后的值,同时对应的key必须为整数,同时不能超出64二进制位的数等于java中的long)  
    要是incr操作的key不存在 则会把不存在的key的value当成0来自增
  • incrby 针对value + n (规则和incr相同 返回为加n后的值,同理不存在的key也会进行创建并且value为0  可以操作负数)
  • decr key  针对value - 1 (和上述规则相同)
  • decrby 针对value - n (和上述规则相同)
  • incrbyfloat 针对value +/- 一个小数 (上述类型都只能对整数进行运算,这个可以操作小数的加和减法)

同时,字符串中还有很多很多很常见的操作,比如说,删除,修改,追加,和获取部分字符串内容

  • append key value (如果对应value的值已经存在,则将value进行一个追加,如果键值对不存在就等于set的用法)(他的返回值为字符串字节的大小)
  • getrange key start end (功能的话类似于java中的subString,返回key对应子串的start到end范围的下标,0表示第一个元素。左右都是闭区间。同时可以使用负数表示倒数,-1表示倒数第一个字符串(就是最后一个)) 如果是汉字的话,这样进行一个子串切分的操作,很可能切出来不是汉字,因为redis中字符串是以字节的形式进行存储的,而不是先指定特定的存储方式,所以随便切,在uft-8不一定能查到对应编码内容了
  • setrange key offset value (修改字符串的内容,从offset偏移量(第一个字符的下标为0)开始进行一个字符串的替换,替换的长度取决于value的长度,要是value非常长,则会修改原字符串的长度) 如果是中文字符串进行替换,容易出问题,问题和上述叙述类似

    要是对不存在的键值对进行操作的话,会先生成一个/0x00这样的字节,一直生成到追加的位置为止,然后进行一个内容的追加。
  • strlen key (获取到key对应value的字符串的长度,单位为字节java的char的话是2个字节表示的)有一个需要注意的地方在java中以char类型进行编码的编码方式的话一个汉字是占2个字节的,但是在String中,一个汉字是占3个字节的。很多时候都在进行一个无意思的切换操作

redis中String类型的编码方式

  • OBJECT encoding key (可以查看当前字符串的一个编码方式)

redis存储小数的话 还是通过字符串来进行存储的,也就表示每次计算,都要进行一个字符串到小数,然后小数到整数的一个转换过程。

下一篇写关于哈希的

  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值