Redis--string类型

Redisstring类型

类型是针对value的,key的类型只能是string!!

string类型是基石,其他类型都是建立在string类型上的。

Redis的字符串直接按照二进制的方式存储,不会做任何编码转换。存的是啥,取出来的就是啥。

基本命令

1. set && setex && psetex && setnx

key存在就覆盖,之前keyTTL也失效。不存在就创建。

set key value [EX seconds | PX milliseconds] [NX|XX]

# setex key 10 value
set key value ex 10  # 定义的同时设置过期时间为10s
# psetex key 10 value
set key value px 10  # 定义的同时设置过期时间为10ms
 
# setnx key value
set key value NX     # key不存在才设置,key存在就不设置(返回nil)
# 没有setxx
set key value XX     # key存在才设置,覆盖原来的key

2. get

获取key对应的value只能获取string类型对应的value!!

get key

3. mset

一次设置多个keyRedisclientserver通过网络传输。一次设置多个可以减少网络传输的次数,提高效率。(网络I/O还是很慢的)。Redis中很多操作都可以批量进行。

但是也不要一次设置太多key会导致client处理很长时间而使得其他的命令被阻塞住。

mget key value [key1 value1 ...]

4. mget

一次获取多个value

mget key [key1 ...]

5. incr && incrby

对应的value必须是整型的字符串。如 ”111“

key不存在,则将其插入,且value是1 (0 + 1)

incr使value + 1

incrby使value + 指定的数

incr key
incr key 10

6. decr && decrby

和上一个基本一样。

decr使value - 1

decrby使value - 指定的数

decr key
decrby key 10

7. incrbyfloat (很少用)

对应的value必须是浮点型的字符串。如 ”1.9“

key不存在,则将其插入,且value是 0 + 指定的数

使value +/- 指定的浮点数

incrbyfloat key 0.9   # +0.9
incrbyfloat key -0.1  # -0.1

8. append

字符串追加,返回当前value的长度(字节数)。(UTF-8下一个汉字三个字节,unicode下一个汉字两个字节。)

# 把value追加到key已有的value后面,key不存在就相当于设置
append key value

9. getrange && setrange

getrange获取 [start, end] 区间的子串,其中 -1 代表倒数第一个字符,-2代表倒数第二个字符…

如果value里保存的是汉字,那么这样获取子串是未定义的!

# 获取value下标是 0~3 的子串(左闭右闭)
getrange key 0 3

setrange从指定偏移量(offset)开始,使新的value替代原来的value(中的一部分)

key不存在,就自动生成一个value,把offset之前的内容填充成 0x00

# setrange key offset value 
setrange key 3 "aaa"   # 3 是下标(从0计算)

10. strlen

获取value字符串的长度,单位是字节。

MySQLvarchar(N)N代表的是字符,而非字节!

strlen key

string类型内部编码

1. int

适用于8字节的长整型。

2. embstr

适用于长度较短的字符串。小数的内部编码是字符型!

3. raw

通用的字符串。

查看内部编码:

object encoding key

string类型的应用场景

1. 用作缓存

在这里插入图片描述

此时随着时间的推移,会不断有要访问的数据不在缓存里,就不断会有数据写到缓存,那缓存中的数据就会越来越多!!解决:

  1. 在把数据写到Redis时给这个key设置过期时间,过期就自动删除了(惰性删除策略和定期删除策略)。
  2. Redis在内存不足时也有淘汰策略,释放内存。

2. 计数功能

例如视频网站中视频播放次数,点赞次数…

3. 存储共享会话(Session)

Cookie(浏览器存储数据的机制)

Session(服务器存储数据的机制),存储客户端和服务器交互过程中专属于某个客户端的数据。但是很多服务器都是分布式的,这个客户下次有可能会访问到其他的机器,但是这个这个客户的相关数据在另一个机器上!!

解决:使用RedisSession信息集中管理,集群中所有机器共享这些信息:

在这里插入图片描述

4. 手机验证码

借用Redis的数据过期机制。

分布式的,这个客户下次有可能会访问到其他的机器,但是这个这个客户的相关数据在另一个机器上!!

解决:使用RedisSession信息集中管理,集群中所有机器共享这些信息:

[外链图片转存中…(img-Dm0uetb9-1700646156087)]

4. 手机验证码

借用Redis的数据过期机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

月球上的星星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值