右手Redis(快速入门)

右手Redis(快速入门),第1张

命令格式

中文

查看Redis里面有多少Key

命令格式

获取不存在的Key返回 nil

命令格式

创建redis客户连接

创建字符串

获得字符串的值

更新字符串的值,key存在则不覆盖

对字符串进行增加和减小

向列表中插入数据的命令为:

从列表左侧插入数据

“lpush”和“rpush”语法相同

命令格式

查看索引为6的数据

查看索引从2到5的数据,包含两端

命令格式

在数据d出的同时,被d的数据也会从列表中删除

修改命令

批量添加

Python中使用列表向Redis列表中批量添加数据

在Python中获取Redis列表的多个数据

使用for循环把数据展开

从左右侧d出数据

命令格式

命令格式

命令格式

smembers命令不会删除数据。如果集合里的数据量极大,谨慎使用,消耗系统I/O资源

如果数据存在,则返回“1”;如果数据不存在,则返回“0”

删除特定的数据

命令格式

命令格式

命令格式

求key1中有,在key2 key3没有的数据

“scard”查看集合中数据条数,“spop”从集合中获取一条数据,Python中无“count”参数

“smembers”读取集合全部数据

“srem”删除特定数据

 Redis的数据类型

Redis的数据类型共有五种:string,list,hash,set,zset;

String 字符串相对来说做平常,key-value,类似是hashmap的用法;

List 队列,可以双向的存值,设计时,也可以简单用来当队列模式;

Hash 字典,一个key 对应多个值;

Set 无序的集合;

Zset 有序的集合;

列表 list

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)

列表 list—— 基本命令

lpush

语法:lpush key value [value„]

作用:将一个或多个值 value 插入到列表 key 的表头(最左边),从左边开始加入值,从左到右的顺序依次插入到表头

返回值:数字,新列表的长度

rpush

语法:rpush key value [value„]

作用:将一个或多个值 value 插入到列表 key 的表尾(最右边),各个 value 值按从左到右 的顺序依次插入到表尾

返回值:数字,新列表的长度

lrange

语法:lrange key start stop

作用:获取列表 key 中指定区间内的元素,0 表示列表的第一个元素,以 1 表示列表的第二个元素;

start ,

stop 是列表的下标值,也可以负数的下标, -1 表示列表的最后一个元素, -2 表示列表的倒 数第二个元素,以此类推。

start ,stop 超出列表的范围不会出现错误。

返回值:指定区间的列表

lindex

语法:lindex key index

作用:获取列表 key 中下标为指定 index 的元素,列表元素不删除,只是查询。

0 表示列表的第一个元素,以 1 表示列表的第二个元素;

start ,

stop 是列表的下标值,也可以负数的下标, -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

返回值:指定下标的元素;index 不在列表范围,返回nil

llen

语法:llen key

作用:获取列表 key 的长度 返回值:数值,列表的长度; key 不存在返回0

lrem

语法:lrem key count value

作用:根据参数count的值,移除列表中与参数value相等的元素,

count>0,从列表的左侧向右开始移 除;

count<0从列表的尾部开始移除;

count=0 移除表中所有与value相等的值。

返回值:数值,移除的元素个数

lset

语法:lset key index value

作用:将列表 key 下标为 index 的元素的值设置为 value。

返回值:设置成功返回 ok ; key 不存在或者 index 超出范围返回错误信息

linsert

语法:linsert key BEFORE(前)|AFTER(后) pivot value

作用:

将值value插入到列表key当中位于值pivot之前或之后的位置。

key不存在,pivot不在列表中, 不执行任何 *** 作。

返回值:命令执行成功,返回新列表的长度。没有找到 pivot 返回 -1, key 不存在返回 0。

RPOP key

移除列表的最后一个元素,返回值为移除的元素。

RPOPLPUSH source destination

移除列表的最后一个元素,并将该元素添加到另一个列表并返回

LPOP key

移除列表的第一个元素,返回值为移除的元素。

使用场景

1 消息队列

队列模式的情况下,可以使用,左进右出的原则,但不建议使用,因为现在市面上有很多成熟的消息中间件,没有必要造轮子;

2.排行榜

某一段时间统计数据的排行榜可以放在list里面,需要分页的话,也可以使用lrange start stop实现;

3 list类型的lpush命令和lrange命令能实现最新列表的功能,每次通过lpush命令往列表里插入新的元素,然后通过lrange命令读取最新的元素列表,如朋友圈的点赞列表、评论列表。

但是,并不是所有的最新列表都能用list类型实现,因为对于频繁更新的列表,list类型的分页可能导致列表元素重复或漏掉,举个例子,当前列表里由表头到表尾依次有(E,D,C,B,A)五个元素,每页获取3个元素,用户第一次获取到(E,D,C)三个元素,然后表头新增了一个元素F,列表变成了(F,E,D,C,B,A),此时用户取第二页拿到(C,B,A),元素C重复了。只有不需要分页(比如每次都只取列表的前5个元素)或者更新频率低(比如每天凌晨更新一次)的列表才适合用list类型实现

哈希类型hash

redis hash是一个 string 类型的 field 和 value 的映射表,hash特别适合用于存储对象,每个 hash 可以存储 232 - 1键值对(40多亿);

哈希类型 hash—— 基本命令

hset /hget /hmset /hmget /hgetall /hkeys /hvals /hexists

hset

语法:hset hash 表的key field value

作用:将哈希表 key 中的域 field 的值设为value ,如果 key 不存在,则新建 hash 表,执行赋值,如果有 field ,则覆盖值。

返回值: ①如果 field 是 hash 表中新field,且设置值成功,返回 1 ②如果 field 已经存在,旧值覆盖新值,返回0

hget

语法:hget key field

作用:获取哈希表 key 中给定域 field 的值

返回值:field 域的值,如果 key 不存在或者 field 不存在返回nil

hmset

语法:hmset key field value [field value„]

说明:同时将多个field-value(域-值)设置到哈希表key中,此命令会覆盖已经存在的field, hash表key不存在,创建空的hash表,执行hmset

返回值:设置成功返回ok, 如果失败返回一个错误

hmget

语法:hmget key field [field„]

作用:获取哈希表key中一个或多个给定域的值

返回值:返回和field顺序对应的值,如果field不存在,返回nil

hgetall

语法:hgetall key

作用:获取哈希表key中所有的域和值

返回值:以列表形式返回hash中域和域的值 ,key不存在,返回空hash

hdel

语法:hdel key field [field„]

作用:删除哈希表 key 中的一个或多个指定域 field,不存在 field 直接忽略

返回值:成功删除的 field 的数量

hkeys

语法:hkeys key

作用:查看哈希表 key 中的所有 field 域

返回值:包含所有 field 的列表,key 不存在返回空列表

hvals

语法:hvals key

作用:返回哈希表中所有域的值 返回值:包含哈希表所有域值的列表,key 不存在返回空列表

hexists

语法:hexists key field

作用:查看哈希表 key 中,给定域 field 是否存在

返回值:如果 field 存在,返回 1, 其他返回0

使用场景

1、购物车

以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的3个要素,如下图所示。

2、hash还是比较适合存储对象(key field value)或者是字典表(type,key,vlaue),刚好符合对象的要素,但string + json也可以存储,两则比较有什么区别?

 String  + json    Hash

效率很  高           高

容量      低           低

灵活性  低           高

序列化  简单       复杂

[Redis] redis-cli 命令总结

Redis提供丰富命令(command)数据库各种数据类型进行 *** 作些commandLinux终端使用

编程比使用Redis Java语言包些命令都应面Redis提供命令做总结

官网命令列表: (英文)

1、连接 *** 作相关命令

quit:关闭连接(connection)

auth:简单密码认证

2、value *** 作命令

exists(key):确认key否存

del(key):删除key

type(key):返值类型

keys(pattern):返满足给定pattern所key

randomkey:随机返key空间key

rename(oldname, newname):key由oldname重命名newname若newname存则删除newname表示key

dbsize:返前数据库key数目

expire:设定key间(s)

ttl:获key间

select(index):按索引查询

move(key, dbindex):前数据库key转移dbindex索引数据库

flushdb:删除前选择数据库所key

flushall:删除所数据库所key

3、String *** 作命令

set(key, value):给数据库名称keystring赋予值value

get(key):返数据库名称keystringvalue

getset(key, value):给名称keystring赋予value

mget(key1, key2,…, key N):返库string(名称key1key2…)value

setnx(key, value):存名称keystring则向库添加string名称key值value

setex(key, time, value):向库添加string(名称key值value)同设定期间time

mset(key1, value1, key2, value2,…key N, value N):同给string赋值名称key istring赋值value i

msetnx(key1, value1, key2, value2,…key N, value N):所名称key istring都存则向库添加string

名称key i赋值value i

incr(key):名称keystring增1 *** 作

incrby(key, integer):名称keystring增加integer

decr(key):名称keystring减1 *** 作

decrby(key, integer):名称keystring减少integer

append(key, value):名称keystring值附加value

substr(key, start, end):返名称keystringvalue串

4、List *** 作命令

rpush(key, value):名称keylist尾添加值value元素

lpush(key, value):名称keylist添加值value 元素

llen(key):返名称keylist度

lrange(key, start, end):返名称keyliststart至end间元素(标0始同)

ltrim(key, start, end):截取名称keylist保留start至end间元素

lindex(key, index):返名称keylistindex位置元素

lset(key, index, value):给名称keylistindex位置元素赋值value

lrem(key, count, value):删除count名称keylist值value元素

count0删除所值value元素count>0至尾删除count值value元素count<0尾删除|count|值value元素

lpop(key):返并删除名称keylist首元素 rpop(key):返并删除名称keylist尾元素

blpop(key1, key2,… key N, timeout):lpop命令block版本

即timeout0若遇名称key ilist存或该list空则命令结束

timeout>0则遇述情况等待timeout秒问题没解决则keyi+1始list执行pop *** 作

brpop(key1, key2,… key N, timeout):rpopblock版本参考命令

rpoplpush(srckey, dstkey):返并删除名称srckeylist尾元素并该元素添加名称dstkeylist部

5、Set *** 作命令

sadd(key, member):向名称keyset添加元素member

srem(key, member) :删除名称keyset元素member

spop(key) :随机返并删除名称keyset元素

smove(srckey, dstkey, member) :member元素名称srckey集合移名称dstkey集合

scard(key) :返名称keyset基数

sismember(key, member) :测试member否名称keyset元素

sinter(key1, key2,…key N) :求交集

sinterstore(dstkey, key1, key2,…key N) :求交集并交集保存dstkey集合

sunion(key1, key2,…key N) :求并集

sunionstore(dstkey, key1, key2,…key N) :求并集并并集保存dstkey集合

sdiff(key1, key2,…key N) :求差集

sdiffstore(dstkey, key1, key2,…key N) :求差集并差集保存dstkey集合

smembers(key) :返名称keyset所元素

srandmember(key) :随机返名称keyset元素

6、zset(sorted set) *** 作命令

zadd(key, score, member):向名称keyzset添加元素memberscore用于排序该元素已经存则根据score更新该元素顺序

zrem(key, member) :删除名称keyzset元素member

zincrby(key, increment, member) :名称keyzset已经存元素member则该元素score增加increment;

否则向集合添加该元素其score值increment

zrank(key, member) :返名称keyzset(元素已按score排序)member元素rank(即index0始)

若没member元素返nil

zrevrank(key, member) :返名称keyzset(元素已按score排序)member元素rank(即index0始)

若没member元素返nil

zrange(key, start, end):返名称keyzset(元素已按score排序)indexstartend所元素

zrevrange(key, start, end):返名称keyzset(元素已按score排序)indexstartend所元素

zrangebyscore(key, min, max):返名称keyzsetscore >= min且score <= max所元素

zcard(key):返名称keyzset基数 zscore(key, element):返名称keyzset元素element

score zremrangebyrank(key, min, max):删除名称keyzsetrank >= min且rank <= max所元素

zremrangebyscore(key, min, max) :删除名称keyzsetscore >= min且score <= max所元素

zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):Nzset求并集交集

并集合保存dstkeyN于集合每元素score进行AGGREGATE运算前都要乘于WEIGHT参数

没提供WEIGHT默认1默认AGGREGATESUM即结集合元素score所集合应元素进行SUM运算值MINMAX指

结集合元素score所集合应元素值值

7、Hash *** 作命令

hset(key, field, value):向名称keyhash添加元素fieldvalue

hget(key, field):返名称keyhashfield应value

hmget(key, field1, …,field N):返名称keyhashfield i应value

hmset(key, field1, value1,…,field N, value N):向名称keyhash添加元素field ivalue i

hincrby(key, field, integer):名称keyhashfieldvalue增加integer

hexists(key, field):名称keyhash否存键field域

hdel(key, field):删除名称keyhash键field域

hlen(key):返名称keyhash元素数

hkeys(key):返名称keyhash所键

hvals(key):返名称keyhash所键应value

hgetall(key):返名称keyhash所键(field)及其应value

8、持久化

save:数据同步保存磁盘

bgsave:数据异步保存磁盘

lastsave:返功数据保存磁盘Unix戳

shundown:数据同步保存磁盘关闭服务

9、远程服务控制

info:提供服务器信息统计

monitor:实转储收请求

slaveof:改变复制策略设置

config:运行配置Redis服务器

String、Hash、List、Set和Zset。

等同于java中的, Map<String,String> string 是redis里面的最基本的数据类型,一个key对应一个value。

应用场景 :String是最常用的一种数据类型,普通的key/value存储都可以归为此类,如用户信息,登录信息和配置信息等;

实现方式 :String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr、decr等 *** 作(自增自减等原子 *** 作)时会转成数值型进行计算,此时redisObject的encoding字段为int。

Redis虽然是用C语言写的,但却没有直接用C语言的字符串,而是自己实现了一套字符串。目的就是为了提升速度,提升性能。 Redis构建了一个叫做简单动态字符串(Simple Dynamic String),简称SDS。

Redis的字符串也会遵守C语言的字符串的实现规则,即 最后一个字符为空字符。然而这个空字符不会被计算在len里头。

Redis动态扩展步骤:

Redis字符串的性能优势

常用命令 :set/get/decr/incr/mget等,具体如下;

ps:计数器(字符串的内容为整数的时候可以使用),如 set number 1。

补充:

等同于java中的: Map<String,Map<String,String>> ,redis的hash是一个string类型的field和value的映射表, 特别适合存储对象。 在redis中,hash因为是一个集合,所以有两层。第一层是key:hash集合value,第二层是hashkey:string value。所以判断是否采用hash的时候可以参照有两层key的设计来做参考。并且注意的是, 设置过期时间只能在第一层的key上面设置。

应用场景 :我们要存储一个用户信息对象数据,其中包括用户ID、用户姓名、年龄和生日,通过用户ID我们希望获取该用户的姓名或者年龄或者生日;

实现方式 :Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口。如,Key是用户ID, value是一个Map。 这个Map的key是成员的属性名,value是属性值 。这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 key(用户ID) + field(属性标签) 就可以 *** 作对应属性数据。 当前HashMap的实现有两种方式 :当HashMap的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,这时对应的value的redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时redisObject的encoding字段为int。

常用命令 :hget/hset/hgetall等,具体如下:

等同于java中的 Map<String,List<String>> ,list 底层是一个链表,在redis中,插入list中的值,只需要找到list的key即可,而不需要像hash一样插入两层的key。 list是一种有序的、可重复的集合。

应用场景 :Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现;

实现方式 :Redis list的实现为一个 双向链表 ,即可以支持反向查找和遍历,更方便 *** 作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括 发送缓冲队列 等也都是用的这个数据结构。

常用命令 :lpush/rpush/lpop/rpop/lrange等,具体如下:

性能总结 :

它是一个字符串链表,left、right都可以插入添加。

等同于java中的 Map<String,Set<String>> ,Set 是一种无序的,不能重复的集合。并且在redis中,只有一个key它的底层由hashTable实现的,天生去重。

应用场景 :Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动去重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且 set提供了判断某个成员是否在一个set集合内的重要接口 ,这个也是list所不能提供的;如保存一些标签的名字。标签的名字不可以重复,顺序是可以无序的。

实现方式 :set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。

常用命令 :sadd/spop/smembers/sunion等,具体如下:

ZSet(Sorted Set:有序集合) 每个元素都会关联一个double类型的分数score,分数允许重复,集合元素按照score排序( 当score相同的时候,会按照被插入的键的字典顺序进行排序 ),还可以通过 score 的范围来获取元素的列表。

应用场景 :Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以 通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。 当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。

底层实现 : zset 是 Redis 提供的一个非常特别的数据结构,常用作排行榜等功能,以用户 id 为 value ,关注时间或者分数作为 score 进行排序。实现机制分别是 zipList 和 skipList 。规则如下:

zipList:满足以下两个条件

skipList:不满足以上两个条件时使用跳表、组合了hash和skipList

为什么用skiplist不用平衡树?

主要从内存占用、对范围查找的支持和实现难易程度这三方面总结的原因。

拓展:mysql为什么不用跳表?

常用命令 :zadd/zrange/zrem/zcard等;

官网地址: >

Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。),Redis数据都是缓存在计算机内存中并且它会周期性的把更新的数据写入磁盘或者把修改 *** 作写入追加的记录文件,实现数据的持久化。谈到存储数据,那么必然要涉及到相关的数据类型,redis主要有以下数据类型:

描述:string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。value其实不仅是String,也可以是数字。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg或者序列化的对象。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

常用命令:get、set、incr、decr、mget等。

应用场景:规key-value缓存应用。常规计数: 点赞数, 粉丝数。

描述: hash 是一个键值(key => value)对集合。Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

常用命令:hget,hset,hgetall 等。

应用场景:存储部分变更数据,如商品信息等。

描述:list 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

常用命令:lpush(添加左边元素),rpush,lpop(移除左边第一个元素),rpop,lrange(获取列表片段,LRANGE key start stop)等。

应用场景:消息队列,关注列表,粉丝列表等都可以用Redis的list结构来实现。

描述: set是string类型的无序集合。集合是通过hashtable实现的,概念和数学中个的集合基本类似,可以交集,并集,差集等等,set中的元素是没有顺序的。所以添加,删除,查找的复杂度都是O(1)。

常用命令:sadd,spop,smembers,sunion 等。

应用场景:交集,并集,差集(微博中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等 *** 作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合 *** 作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中)

描述:zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同是可以打分(排序)

常用命令:zadd,zrange,zrem,zcard等

应用场景:排行榜,带权重的消息队列

描述:Bitmaps这个“数据结构”可以实现对位的 *** 作。 把数据结构加上引号主要因为:

Bitmaps本身不是一种数据结构, 实际上它就是字符串 , 但是它可以对字符串的位进行 *** 作。

Bitmaps单独提供了一套命令, 所以在Redis中使用Bitmaps和使用字符串的方法不太相同。 可以把Bitmaps想象成一个以位为单位的数组, 数组的每个单元只能存储0和1, 数组的下标在Bitmaps中叫做偏移量。其实大多数Bitmaps的应用场景可以用其他数据类型来实现,用Bitmaps主要是存储空间占用特别少

常用命令:getbit key offset;setbit key offset value

应用场景:统计用户访问,统计**某天的的播放量

描述:Redis 在 289 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。这类数据结构的基本大的思路就是使用统计概率上的算法,牺牲数据的精准性来节省内存的占用空间及提升相关 *** 作的性能

常用命令:pfadd, pfcount,pfmerge

应用场景:统计网站的每日UV

描述:GEO功能在Redis32版本提供,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能geo的数据类型为zset

常用命令:geoadd,geopos, geodist

应用场景:附近位置、摇一摇

参考列表:

Redis五种数据类型及应用场景

新版本的redis的list对象都是使用quicklit编码。为了更好的理解quicklit编码,我们先介绍quicklit编码的前身,ziplist和linklist。

==ziplist和linklist都已经被quicklit所取代,这里只是为了更好的理解quicklit才列出ziplist和linklist两种编码==

顾名思义,压缩链表,为了节约内存空间而设计。

·若列表zlbytes属性的值为0x50(十进制80),表示压缩列表的总长为80字节。

·若列表zltail属性的值为0x3c(十进制60),这表示如果我们有一个指向压缩列表起始地址的指针p,那么只要用指针p加上偏移量60,就可以计算出表尾节点entry3的地址。

·若列表zllen属性的值为0x3(十进制3),表示压缩列表包含三个节点。

节点的previous_entry_length属性以字节为单位,记录了压缩列表中前一个节点的长度,也就是说当我们获取到一个指向当前节点的指针p时,么只要用指针p减去偏移量previous_entry_length就可以获得上一个节点,通过zltail属性又可快速获取最后一个节点。压缩链表通过这种方式实现从表尾向表头遍历链表。

压缩链表开辟了一块连续的空间实现了链表结构,极大的提高的内存的利用率,缺点是需要经常要重新分配内存。

优点是插入新增不需要重新分配内寸,缺点内存使用效率较低。

了解了ziplist和linkedlist之后就很容易理解quicklist的结构了

这样就极大的降低了内存的碎片化程度,又降低了内存重新分配的规模。

实际使用的时候,quicklist在不断的新增元素时,第一个quicklistNode和最后一个quicklistNode指向的ziplist始终保持不压缩的状态,而中间的ziplist会被再次压缩(执行LZF算法)。不被压缩的ziplist数量是由redisconf中的list-compress-depth决定的,默认是一,也就是第一个和最后一个不被压缩,当ziplist满了需要新建一个quicklistNode时它的空间限制是8kb,由list-max-ziplist-size决定。

我们可以用rpush,lpush,rpop,lpop等命令 *** 作quicklist。

以上就是关于右手Redis(快速入门)全部的内容,包括:右手Redis(快速入门)、redis中list和hash的基本命令和使用场景、redis getset 命令怎么使用方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9752079.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存