千家信息网

Redis String怎么使用

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇"Redis String怎么使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2024年09月22日Redis String怎么使用

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

一、基本使用

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

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). *///引用计数器    int refcount;    //指向真实数据结构对象    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怎么使用"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

字符 空间 字符串 数据 内容 长度 存储 时间 成功 冗余 分布式 命令 数据结构 时候 类型 结构 分配 不同 也就是 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 linux查看服务器编码 姑苏区管理软件开发诚信合作 数据库原理与技术第五版题库 华为手机无线网络安全协议 memorycache 数据库 软件开发企业进项抵扣有哪些 网站服务器选择的主要原则 软件开发工具导图 战地5怎么进联机服务器 宽带服务器一般用几年 吉林特种网络技术分类资费 银行软件开发 具体职务 我的世界pe连接电脑服务器 nginx文件下载服务器 简述企业网络安全的作用 虹口区市场软件开发服务报价表 dota辅助软件开发 阿里云服务器安装镜像 我国颁布的网络安全法律 高速两侧的服务器互通吗 笔记本怎么访问ftp服务器 pyqt5数据库登录功能 小程序服务器和域名一年多少钱 交银软件开发大厦 ssms的服务器名称在哪里找 网络安全的简单介绍 服务器后台管理地址 如何使用阿里云服务器游戏 未登录账户创建数据库用户 部队网络技术专业
0