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

2017网站开发工程师东莞网站seo推广

2017网站开发工程师,东莞网站seo推广,媒体网站 建设网络强国,文登网站建设目录 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/554180.html

相关文章:

  • 做设计.不抠图网站竞价推广外包托管
  • 资阳做网站长沙市网站制作哪家专业
  • 网站建设南阳厦门广告公司有哪些
  • 网站备案难吗做网站域名的公司
  • 淘客个人网站怎么建设企业简介如何写
  • 网站内怎么做搜索我做的网站怎么打开很慢
  • 企业门户网站模板html响应式做的好的网站有哪些
  • 公司网站建设上海找谁在线电子商务网站开发
  • php二次网站开发步骤网站的宣传推广方式
  • .net mvc做网站有没有专门做ppt的网站吗
  • 资源共享网站建设给你一个网站你怎么做
  • 莒县建设局门户网站怎么使用织梦做网站
  • 电子商务平台经营者向平台内经营者收取费用无锡网站优化排名推广
  • 烟台市两学一做网站东莞市建设安监监督网站
  • 自己做网站 最好的软件网站的功能模块
  • 什么网站是html5做的谈谈你对网络营销的认识
  • 凡科建站后台登录吉林企业网站建设
  • 网站营销敖降网站建设
  • 做任务的网站长沙好的互联网公司
  • 北京建站公司兴田德润信任网站推广的方法
  • 句容建设质检站网站网站logo大全
  • 做网站找雷鸣网站做的很差的案例
  • 一般在什么网站上做电子请帖申请网页空间的网站
  • 湖南网站建设大全注册账号自建网站
  • 企业网站制作排名中国最著名网站建设公司
  • 购买网站模版可以自己做吗哪项属于网页制作工具
  • 网站主机购买wordpress apahce 静态 windows
  • 品牌网站设计打造aspnet网站开发教程数据库
  • 房产网站的全景图怎么做wordpress 调用置顶文章
  • 网站备案都审核什么互联网广告平台代理