当前位置: 首页 > wzjs >正文

上虞做网站沧州百度推广公司

上虞做网站,沧州百度推广公司,wordpress退出,哪个浏览器不屏蔽网站目录 1、介绍2、底层实现【1】SDS【2】int编码【3】embstr编码【4】raw编码【5】embstr和raw的区别 3、常用指令【1】字符串基本操作:【2】批量操作【3】计数器【4】过期时间【5】不存在就插入 4、使用场景 1、介绍 string是redis中最简单的键值对形式,…

目录

  • 1、介绍
  • 2、底层实现
    • 【1】SDS
    • 【2】int编码
    • 【3】embstr编码
    • 【4】raw编码
    • 【5】embstr和raw的区别
  • 3、常用指令
    • 【1】字符串基本操作:
    • 【2】批量操作
    • 【3】计数器
    • 【4】过期时间
    • 【5】不存在就插入
  • 4、使用场景

1、介绍

string是redis中最简单的键值对形式,它的value除了可以是字符串,还可以是数字、二进制数据,value的最大长度为521M,其底层主要通过int和SDS(简单动态字符串)组成。

2、底层实现

【1】SDS

SDS是redis的底层数据结构之一,其结构如下:

struct sdshdr {int len;    // 已使用的字节数int free;   // 未使用的空闲字节数char buf[]; // 存储字符的柔性数组
};

其功能为:

功能解释
预分配空间当字符串增长时,free记录额外分配的空间,避免频繁内存重新分配
惰性释放当字符串缩短时,free记录回收的空间,供后续复用,不会立即释放

与C字符串相比:

特性C字符串SDS
长度获取遍历到\0,时间复杂度为O(N)直接读len,时间复杂度为O(1)
修改时的内存重分配每次修改均需重分配通过free进行"预分配/惰性释放"
二进制安全无法存储含\0的数据通过len判断边界,支持二进制存储

【2】int编码

当string类型存储整型数据时,底层就采用了int编码方式,其存储结构可以如图表示:

在这里插入图片描述

【3】embstr编码

如果string类型存储字符串数据时,当字符串长度比较小时,也就是小于44字节(redis不同版本有差异),就采用embstr编码来存储短字符串,这时就用到了SDS数据结构,其存储结构如图表示:

在这里插入图片描述

【4】raw编码

如果string类型存储字符串数据时,当字符串长度大于44字节时,就采样raw编码来存储字符串,虽然raw编码也使用了SDS数据结构,但是和redis的基本结构不是连续的,结构如图所示:

在这里插入图片描述

【5】embstr和raw的区别

embstr编码和raw编码的区别如下:

对比维度embstrraw
存储结构RedisObject和SDS连续存储在同一内存块RedisObject和SDS分来存储
内存分配次数1次分配2次分配
访问效率更高,内存连续稍低,两次访问
修改时的行为任何修改操作都会转换为raw编码直接修改
适用场景短字符串长字符串
内存碎片更少更多
最大长度44B521MB

3、常用指令

【1】字符串基本操作:

#设置key-value
127.0.0.1:6379[2]> set animal cat  
OK#查看key对应的value
127.0.0.1:6379[2]> get animal
"cat"#判断key是否存在,存在返回1
127.0.0.1:6379[2]> exists animal
(integer) 1#判断key是否存在,不存在返回0
127.0.0.1:6379[2]> exists work
(integer) 0#获取key的长度
127.0.0.1:6379[2]> strlen animal
(integer) 3#删除对应的key-value
127.0.0.1:6379[2]> del animal
(integer) 1

【2】批量操作

#批量设置key-value
127.0.0.1:6379[2]> mset animal cat hobby eat
OK#批量获取key-value
127.0.0.1:6379[2]> mget animal hobby
1) "cat"
2) "eat"

【3】计数器

#设置数字10
127.0.0.1:16379[2]> set number 10
OK
127.0.0.1:16379[2]> get number
"10"#number自增+1
127.0.0.1:6379[2]> incr number
(integer) 11
127.0.0.1:6379[2]> get number
"11"#number自增+100
127.0.0.1:6379[2]> incrby number 100
(integer) 111
127.0.0.1:6379[2]> get number
"111"#number自增-1
127.0.0.1:6379[2]> decr number
(integer) 110
127.0.0.1:6379[2]> get number
"110"#number自增-100
127.0.0.1:6379[2]> decrby number 100
(integer) 10
127.0.0.1:6379[2]> get number
"10"

【4】过期时间

#查看key的过期时间,-1代表永不过期
127.0.0.1:6379[2]> ttl animal
(integer) -1#给已存在的key设置过期时间
127.0.0.1:6379[2]> expire animal 60
(integer) 1
#还剩58秒过期
127.0.0.1:6379[2]> ttl animal
(integer) 58
#-2代表key不存在,也就是已过期
127.0.0.1:6379[2]> ttl animal
(integer) -2#设置key-value并设置过期时间,第一种设置方式
127.0.0.1:6379[2]> set cat sleep ex 60
OK
127.0.0.1:6379[2]> ttl cat
(integer) 57#设置key-value并设置过期时间,第二种设置方式
127.0.0.1:6379[2]> setex dog 60 play
OK
127.0.0.1:6379[2]> ttl dog
(integer) 54

【5】不存在就插入

#返回1代表不存在插入成功
127.0.0.1:6379[2]> setnx animal cat
(integer) 1#返回0表达已存在插入失败
127.0.0.1:6379[2]> setnx animal cat
(integer) 0

4、使用场景

string类型根据其特性的使用场景如下:

特性说明场景
原子操作支持INCR/DECR等原子操作计数器、限流器
批量操作MEST/MGET减少网络开销批量缓存读写
位操作SETBIT/GETBIT直接操作二进制位布隆过滤器、位图统计
过期控制EXPIRE实现自动过期会话管理、临时数据缓存
http://www.dtcms.com/wzjs/83225.html

相关文章:

  • 网站建设招标公告电商平台推广方案
  • 礼品网站制作中国数据统计网站
  • 建设银行网站查看完整卡号搜索引擎营销的步骤
  • 西安医院网站建设网址和网站的区别
  • 自己做的网站会被黑吗怎么制作属于自己的网址
  • 网站建设行业企业网络营销案例分析
  • 地方生活门户网站建设方案如何做品牌推广方案
  • 青海旭云网络做网站需要多少钱搜索引擎优化是指什么
  • wordpress自建cdn网站关键词优化推广哪家好
  • vs动态网站开发百度竞价点击价格
  • 网络服务检测与维护seo 视频
  • 中国企业有哪些湖南专业关键词优化服务水平
  • 济南网站建设培训新东方考研班收费价格表
  • 电商公司网站枸橼酸西地那非片是什么
  • 有域名怎么建设网站一站式网站建设公司
  • 那些做seo的网站桂林网站设计
  • 河北省网站建设公司百度指数的特点
  • 做电子外贸网站建设廊坊网站设计
  • 广州疫情最新数据seo基础课程
  • 如何在robots里面提交网站地图网络营销与直播电商是干什么的
  • 个人网站可以如果做淘宝客上海网络推广公司排名
  • 网站那个做的比较好的百度seo收费
  • 软件应用大全石家庄百度快照优化
  • typecho to wordpress学生班级优化大师
  • 北京做网站优化的公司怎样留别人电话在广告上
  • 网络营销推广公司结构网站快照优化公司
  • 信息中心完成网站建设关键词分布中对seo有危害的
  • t型布局网站怎么做女生做sem专员的工作难吗
  • 网站做资讯需要获取许可证吗简单的seo
  • 海口网站优化seo关键词智能排名