Redis---字符串的操作

set的时候设置生命周期
  • set key value [ex 秒] /[px 毫秒] [nx]/[xx]:后面接秒是可以设置key的生命周期的
    • 设置name的生命周期10s有效;set name sinmu ex 10
      在这里插入图片描述
  • 当ex和px同时出现的时候,以后面的为准
    • set name sinmu ex 10 px 1000,实际的时间会以1000毫秒为准
  • nx:如果key不存在就进行set
  • xx:如果key存在就可以执行
    在这里插入图片描述
一次性设置/获取多个key
  • 一次设置多个key:mset name sinmu sex man age 3
  • 一次性获取多个value:mget name sex age
    在这里插入图片描述
对字符串的修改
  • setrange key offset value:作用是从key的地offset位开始替换为value值,字符串是从第0位开始的
    如:将name的值向右偏移第2个位后开始替换**:setrange name 2 **
    在这里插入图片描述

  • 当这个偏移的值大于字符串的长度时会发生一些奇妙的变化:后面的会用\x00补充
    在这里插入图片描述

对字符串的追加
  • append key value:将value追加到key存储的值的后面
    如我需要在name后面追加一个hello
    在这里插入图片描述
对字符串的截取
  • getrange key start stop:对key的内容截取[start,stop]段
    • 当start >= stop > 0,会返回空字符串
    • start >=length,返回空字符串
    • stop >= length , 截取到字符串末尾

在这里插入图片描述

getset:返回旧值,设置新值

对于这个我想到一个应用场景:linux每次登陆会显示上一次的登陆时间,那么我们通过redis也可以模拟这个操作。
set time 2020-6-15,当6.16登陆的时候显示的应该是2020-6-15这个值,并且这个时间也更新到2020-6-16登陆的值。对此的语句:getset time 20206-16
在这里插入图片描述

对于数字增加和减少
  • incr key:增加1
  • decr key:减少1
  • incrby key num:增加num
  • decrby key num:减少num
    在这里插入图片描述

对此有些类似与一个资格的获取,淘宝进行秒杀的时候,都是先获取一个购买的资格,然后在进行订单操作,那么这个购买的资格以及对用户显示的剩余货物的数量就可以通过redis进行模拟。
比如货物的数量有100份,对此货物进行秒杀,每多一个购买的资格,就有一个触发条件进行decr key,下一个购买者抢购资格的时候就会少一个。
在这里插入图片描述

将大写字母转换成小写
  • 主要是使用二进制的操作
    根据Ascii码表 A的十进制是65=64+1,转换成二进制为0100 0001,同理a的十进制97,其二进制为0110 0001

A 65 0100 0001
a 97 0110 0001
换言之,在A的基础上,从左往右数,只需要将第2位的0换成1即可转换成a,现在redis有这么一个命令可以对位进行操作

  • setbit key offset value:将key的二进制的offset位的值设置为value,如将A转换成a,那么只需要将A的二进制的的第2位的0设置为1 就可以转换成a了,其语句为;setbit word 2 1
    在这里插入图片描述

需要注意2个问题

  • 如果这个offset超出了key原本的位的长度,会发生什么?

针对第一个问题来尝试一下,A只有8位,那么使用setbit word 10 1
在这里插入图片描述
说明中间是用\x00进行填充,另我好奇的是,最后有个\b,其代表的应该是二进制,就有些令我不知其解了

  • 这个offset的最大值为多少
    首先来预估一下这个情况,先测试一下216=65536和232=4294967296
    在这里插入图片描述

通过测试发现,(232 )-1是offset的最大值,就有(232)/8个字节,(232)/(8*210)k=219k,有((219)/210)M,大约在512M左右

以上为redis中的字符串的基本操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python小叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值