代码编织梦想

Redis List是一组连接起来的字符串集合。

在这里插入图片描述

写操作:

LPUSH

语法:LPUSH key value [value …]
功能:从头部增加元素,返回值为List中元素的总数。

RPUSH

语法:RPUSH key value [value …]
功能:从尾部增加元素,返回值为List中元素的总数。

LPOP

语法:LPOP key
功能:移出并获取列表的第一个元素。

LREM

语法:LREM key count value
功能:移除值等于value的元素。当count=0,则移除所有等于Fvalue的元
素。当count>0,则从左到右开始移除count个。当count<0则从右到左移除
count个。返回值为被移除元素的数量。

DEL

语法:DEL key[key …]
功能:删除对象,返回值为删除成功了几个键。

UNLINK

语法:UNLINK key [key …]
功能:删除对象,返回值为删除成功了几个键。

和DEL主要有如下不同:

del命令同步删除命令,会阻塞客户端,直到删除完成。unlink 命令是异步
删除命令,只是取消Key在键空间的关联,让其不再能查到,删除是异步进
行,所以不会阻塞客户端。

LLEN

语法:LLEN key
功能:查看List的长度,即List中元素的总数。

LRANGE

语法:LRANGE key start stop
功能:查看start到stop为角标的元素。

编码方式

3.2版本之前,List对象有两种编码方式,一种ZIPLIST,另一种是
LINKEDLIST。

在这里插入图片描述

ZIPLIST

当满足如下条件时,用ZIPLIST编码:
1.列表对象保存的所有字符串对象长度都小于64字节;
2.列表对象元素个数少于512个,注意,这是LIST的限制,而不是ZIPLIST的
限制;
在这里插入图片描述
可以看到,“hello”、“niuniu”、"mart"都挨在一起,正如其名字一样。ZIPLIST内存排列得很紧凑,可以有效节约内存空间。

LINKEDLIST

如果不满足ZIPLIST编码的条件,则使用LINKEDLIST编码。为了便于描述,
我们还是假设列表中包含"hello"、“niuniu”、"mart"三个元素,如果用
LINKEDLIST编码,则是几个String对象的链接结构,结构示意意图如下:
在这里插入图片描述

QUICKLIST横空出世

LINKEDLIST原来是单个节点,只能存一个数据,现在单个节点存的是一个
ZIPLIST,即多个数据。

在这里插入图片描述

在redis7.0之后,压缩列表listpack完全取代了ziplist.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43458555/article/details/137127837

redis java对象list_redis整合spring示例二—java操作redis(存对象及List)-爱代码爱编程

在java操作redis中,咱们已经有了基本的java操作redis相关代码。下面继续 redis存放对象和List可通过对它们先序列化,然后存到redis中。 对象序列化及反序列化工具类: package com._656463.redis; import java.io.ByteArrayInputStream; import java.

Redis对象——列表(list)-爱代码爱编程

文章目录 一. list是什么? 二. list存储结构 1. Redis 3.2之前 2. Redis 3.2之后的版本 ziplist quicklist 三、基础命令 四、应用场景         一. list是什么? list是redis的一种基础数据结构,内部使用双向链表(quic

Redis对象详解-爱代码爱编程

文章目录 五种基本数据类型Redis对象的组成字符串对象SDS不同编码的区别int编码embstr 和 rawRedis如何选择编码列表对象linkedlist编码ziplist编码压缩列表内存连续压缩列表的构成压缩列表节点的构成哈希对象ziplist编码hashtable编码字典Rehash集合对象有序集合对象ziplist实现skiplist实

redis的list存储对象实现-爱代码爱编程

redis用了很久,对五种数据结构的使用很熟悉,但是缺乏对实现的认知。所以趁有时间,仔细学习和梳理了下。 List类型的value对象内部是以linkedlist和ziplist承载。当List的元素个数和单个元素的长度较小时,redis会使用ziplist存储,减少内存的占用,其他情况使用linkedlist。 linkedlist是以双向链表形式实

基于redis实现短信登录-爱代码爱编程

1.7.3、整体访问流程 当注册完成后,用户去登录会去校验用户提交的手机号和验证码,是否一致,如果一致,则根据手机号查询用户信息,不存在则新建,最后将用户数据保存到redis,并且生成token作为redis的key,当我

redis渐进式遍历与数据库管理-爱代码爱编程

渐进式遍历: 2.7 渐进式遍历 Redis 使用 scan 命令进行渐进式遍历键,进而解决直接使用 keys 获取键时可能出现的阻塞问 题。每次 scan 命令的时间复杂度是 O(1),但是要完整地完成所有键的遍历,需要执行多次 scan。过程如下: SCAN cursor [MATCH pattern] [COUNT count] [TYPE

redis的数据类型string使用场景实战-爱代码爱编程

Redis的数据类型String使用场景实战 String模型的使用场景 常见面试题:redis在你们项目是怎么使用的?String类型说一个,还有其他用处没? 知识回顾 // 获取redis的key为 WATC

基于spring boot 3 + spring security6 + jwt + redis实现接口资源鉴权-爱代码爱编程

紧接上一篇文章,基于Spring Boot 3 + Spring Security6 + JWT + Redis实现接口资源鉴权 系列文章指路👉 系列文章-基于SpringBoot3创建项目并配置常用的工具和一些

【redis】在docker中安装redis以及相关报错解决-爱代码爱编程

文章目录 一、在docker里面手动安装(可能报错)Error:Failed to get D-Bus connection: Operation not permitted的解决方法 二、一步到位法

利用redis实现简单的短信登录-爱代码爱编程

在现代应用中,短信登录是一种常见的用户认证方式。它提供了一种便捷的登录方式,同时也增加了账户的安全性。在本文中,我们将介绍如何使用 Redis 实现短信登录的功能,并提供相应的 Java 实现层代码。 1、短信验证码的生成与

【redis】linux安装redis-爱代码爱编程

目录 1. 下载redis2. 上传并解压3. 安装4. redis配置5. 启动redis-server服务 1. 下载redis 1.Redis官网2.历史版

centos 7.9上创建redis用户和组-爱代码爱编程

以下是在CentOS 7.9上创建一个专门用于运行Redis服务的用户和组的步骤: 创建新用户组: 使用groupadd命令创建一个新的用户组,例如redisgroup: sudo groupadd redisgroup 创建新用户: 使用useradd命令创建一个新的用户,例如redisuser,并将其添加到刚刚创建的用户组中: sudo user