Redis String怎么使用

网友投稿 337 2023-11-27

Redis String怎么使用

这篇“Redis String怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Redis String怎么使用”文章吧。

一、基本使用

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

Redis String怎么使用

1、set是语法,key是指定名称, value是需要存储的值

2、EX 指定过期的秒时间,PX指定过期的毫秒时间

3、NX:只有key不存在的时候,才设置成功

4、XX:只有key存在的时候,才设置成功

总结:5.0支持set命令指定过期时间和不存在的时候才设置成功,也就是通过一条命令就可以实现分布式锁加锁的功能,以前的版本设置key和设置过期时间需要分成两个命令,原子性保证难度更大。

二、使用场景

1、热点数据缓存,分布式session

2、Setnx 分布式锁

3、incr 计数器

4、Incr 全局id

5、Incr 限流

6、bit 操作,位图功能,在线用户统计 0/1标记

三、支持存储的数据类型

整型,字符型,float(单浮点型)

四、不同的编码类型

五、String存储原理

在Redis中,数据存储在一个RedisObject类中

typedef struct redisObject {     //这个类型可以是string,也可以是hash,zset等等 unsigned type:4;     unsigned encoding:4;     //记录lru,lfu淘汰算法依赖的访问时间和访问频率     unsigned lru:LRU_BITS;  /* LRU time (relative to global lru_clock) or                            * LFU data (least significant 8 bits frequency                            * and most significant 16 bits access time). */ //引用计数器     intrefcount;//指向真实数据结构对象     void *ptr; } robj;

对于String,Redis自定义了一种简单动态字符串的数据结构来存储字符串数。

源码实现:多种数据结构,分别表示可以存储不同长度的字符串。

通过源码分析,扩容策略是字符串在长度小于 SDS_MAX_PREALLOC 之前,扩容空间采用加倍策略,也就是保留 100% 的冗余空间。当长度超过 SDS_MAX_PREALLOC 之后,为了避免加倍后的冗余空间过大而导致浪费,每次扩容只会多分配 SDS_MAX_PREALLOC大小的冗余空间。

十一、关于惰性空间释放

惰性空间释放用于优化 SDS 的字符串缩短操作:当 SDS 的 API 需要缩短 SDS 保存的字符串时, 程序并不立即使用内存重分配来回收缩短后多出来的字节, 而是使用 free 属性将这些字节的数量记录起来,并等待将来使用。

//仅仅设置长度,没有真正清除数据 void sdsclear(sds s) {     //单纯设置长度为0     sdssetlen(s, 0);     //第一个字符设置为结束符     s[0] = \0; }

真正的清除空间

sds sdsRemoveFreeSpace(sds s)  {struct sdshdr *sh;     sh = (void*) (s-(sizeof(struct sdshdr)));     // 进行内存重分配,让 buf 的长度仅仅足够保存字符串内容 sh = zrealloc(sh, sizeof(struct sdshdr)+sh->len+1);     // 空余空间为 0     sh->free = 0;     return sh->buf; }

以上就是关于“Redis String怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MySQL中SQL优化、索引优化、锁机制、主从复制的方法
下一篇:sql手工注入的方法是什么
相关文章

 发表评论

暂时没有评论,来抢沙发吧~