首页 > 数据库 >Redis

Redis

时间:2023-12-06 14:23:41浏览次数:29  
标签:存储 SDS Redis quickList 内存 字符串

Redis笔记

一、常用命令

登录

redis-cli
auth password

二、数据类型

string

String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构上类似于Java的ArrayList,采用分配冗余空间的方式来减少内存的频繁分配。

  1. 动态大小:SDS 可以根据存储的字符串长度自动扩展或缩小其内部缓冲区的大小,以减少内存的浪费。
  2. O(1) 复杂度的长度查找:SDS 维护了字符串的长度信息,因此你可以在 O(1) 时间内查找字符串的长度,而不需要遍历整个字符串。
  3. 二进制安全:SDS 不仅可以存储文本字符串,还可以存储二进制数据,因为它不依赖于字符串的空终止符。这使得 Redis 可以存储和处理各种数据类型。
  4. 常数时间尾部操作:SDS 支持在字符串的尾部进行添加字符、删除字符、追加其他字符串等操作,这些操作通常具有常数时间的复杂度。
  5. 惰性空间释放:SDS 通过惰性释放的方式回收不再需要的内存,而不是立即释放。

list

https://baijiahao.baidu.com/s?id=1763496410158464261&wfr=spider&for=pc

  1. 快速插入和删除操作:与传统链表相比,quickList 具有更好的性能,尤其是在两端进行插入和删除操作。
  2. 分段存储quickList 将列表划分为多个小的链表块(segments),每个块都包含一些元素。这种分段的方式允许高效地扩展和收缩列表。
  3. 节省内存quickList 在一些场景下可以节省内存,因为它可以更紧凑地存储元素,而不会像传统链表那样浪费大量内存用于指针和元数据。
  4. 支持压缩列表:每个 quickList 块可以选择使用压缩列表(ziplist)来存储元素,以减小内存占用。
  5. 支持多个元素类型:一个 quickList 可以容纳不同类型的元素,这意味着可以存储字符串、整数等各种数据类型。

set

zset

三、数据结构

跳跃表

标签:存储,SDS,Redis,quickList,内存,字符串
From: https://www.cnblogs.com/myDong/p/17879424.html

相关文章

  • Redis集群
    RedisSentinel:什么是Sentinel?有什么用?Sentinel如何检测节点是否下线?主观下线与客观下线的区别?Sentinel是如何实现故障转移的?为什么建议部署多个sentinel节点(哨兵集群)?Sentinel如何选择出新的master(选举机制)?如何从Sentinel集群中选择出Leader?Sentinel可以防......
  • 基于社区电商的Redis缓存架构-库存模块缓存架构(下)
    基于缓存分片的下单库存扣减方案将商品进行数据分片,并将分片分散存储在各个Redis节点中,那么如何计算每次操作商品的库存是去操作哪一个Redis节点呢?我们对商品库存进行了分片存储,那么当扣减库存的时候,操作哪一个Redis节点呢?通过轮询的方式选择Redis节点,在Redis中通过记录......
  • Redis管道
    背景Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤:1客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应。2服务端处理命令,并将结果返回给客户端。上述两步称为:Rou......
  • springboot整合redis
    spring:redis:port:6379host:192.168.88.101password:111111lettuce:pool:max-active:8max-wait:-1msdatabase:0yml配置(单机版)spring:redis:password:111111lettuce:cluster:refr......
  • redis 规则设置
    必须明确应用场景,1)作为缓存还是存储;2)数据丢失对应用的影响解释:与持久化关系数据库(MySQL通过Redo可保证数据不丢)不同,Redis在故障时会丢失分钟级别数据,业务必须确保不会受到影响禁止命令:keys、flushall、flushdb;针对大key禁止命令:hgetall,hkeys,smembers,lindex0-1解释1:Redis为......
  • redisTest
    importjava.util.Map;importredis.clients.jedis.Jedis;publicclassredisTest{/***@paramargs*/publicstaticJedisjedis;publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubjedis=newJedis(&qu......
  • redis2
    redis为什么这么快1、纯内存操作,避免io操作2、单线程架构(数据读写)避免了线程,进程间切换3、使用了io多路复用网络模型-io模型-同步io-异步io-io多路复用-poll-epoll-select读写都是单线程,不需要锁,不会......
  • 【Azure Redis】中国区Redis在东三区的资源无法在通过门户上与北三区资源之间建立灾备
    问题描述为应用启用灾备管理,在北三区建立了一个AzureRedis,同时,在东三区也建立了一个同样的Prem级Redis服务。但是在建立灾备(DR:DiseaseRecovery)时候,却无法选择东三区的资源。 问题解答目前(2023-12-05),中国Azure的东三区是作为北三区的AvailableZone存在的,普通的用户是......
  • java 操作redis更新子节点数据
    1.引入Jedis依赖确保在你的Java项目中引入了Jedis依赖。你可以使用Maven添加以下依赖:<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.11.1</version></dependency>2.示例代码importredis......
  • redis系列(01):redis简介
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/10950727.html出现背景关系型数据库的不足:数据是存储在磁盘上的,磁盘的 I/O 读写瓶颈会直接影响性能所以,我们可以用速度更快的内存来存储常用但数据量不算大、且结构简单的数据这样可以较大程度缓解关系型数据库......