
redis
Come--On
一切安好 只是岁月不饶人
展开
-
Redis--对象--列表对象
列表对象的编码可以是ziplist或者linkedlist ziplist编码的列表对象使用压缩列表作为底层实现,每个压缩列表节点(entry)保存了一个列表元素,举个例子,如果我们执行以下RPUSH命令,那么服务器将创建一个列表对象作为numbers键的值:redis> RPUSH number 1 "three" 5(integer) 3 如果numbers键的值对象使用的是ziplist编码,这个值对象将会是图8-5所展示的样子。 另一方面,linkedlist编码的原创 2020-09-22 15:49:06 · 258 阅读 · 0 评论 -
Redis--对象--字符串对象
字符串对象的编码可以是int、raw、或者embstr 如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么自字符串对象会将整数值保存在字符串对象结构的ptr属性里面(将void*转换成long),并将字符串对象的编码设置成int。 举个例子,如果我们执行以下SET命令,那么服务器将创建一个如图8-1所示的int编码的字符串对象作为number键的值:redis> SET number 10086okredis>OBJECT ENCODING n原创 2020-09-22 14:38:52 · 564 阅读 · 0 评论 -
Redis--对象-基本原理
本文主要写了针对对象的类型的简介及底层的基本原理 Redis主要数据结构,比如简单动态字符串(SDS)、双向链表、字典、压缩列表、整数集合等等。 Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型对象,每种对象都用到了至少一种前面所说的数据结构。 通过这五种不同的类型对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。使用对象的原创 2020-09-22 11:27:05 · 136 阅读 · 0 评论 -
Redis--Redis-整数集合
本篇主要针对Redis整数集合做了一些梳理 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 举个例子,如果我们创建一个只包含五个元素的集合键,并且集合中所有的元素都是整数值,那么这个集合键的底层实现就会是整数集合:redis> SADD numbers 1 3 5 7 9(integer) 5redis> OBJECT ENCODING number‘intset’ 以原创 2020-09-21 16:05:40 · 822 阅读 · 0 评论 -
redis整体梳理---Redis SDS的总结--3
SDS与C字符串比较1SDS与C字符串比较2 接上文,本文讲述SDS API系列函数及总结 下图主要讲述为API操作函数 重要回顾 1.Redis 只会使用C字符串作为字面量,在大多数情况下,Redis使用SDS(Simple Dynamic String,简称动态字符串)作为字符串表示。 2. 比起C字符串,SDS具有以下优点: 1)常用复杂度获取字符串长度。 2)杜绝缓冲区溢出。 3)减少修改字符串长度时所需的内存重分配次数。 4)二进制安全。 .原创 2020-09-18 11:23:50 · 368 阅读 · 0 评论 -
Redis-整体梳理---Redis SDS的原理及与C字符串比较--2
SDS的原理–1一:减少修改字符串带来的内存重分配次数 正如上文中所说,因为C字符串并不记录自身的长度,所以对于一个包含了N个字符串的C字符串来说,这个C字符串的底层实现总是一个N+1个字符长的数据(额外的一个字符空间用于保存空字符)。因为C字符串的长度和底层数组的长度之间存在着这种关联性,所以每次增长或者缩短一个C字符串,程序都总要对这个C字符串的数组进行一次内存重分配操作: 1. 如果程序执行的是增长字符串的操作,比如拼接操作(append),那么在执行这个操作之后,程序首先通过内存重分配.原创 2020-09-17 18:13:24 · 217 阅读 · 0 评论 -
redis整体梳理---Redis SDS的原理及与C字符串比较--1
首先,Redis并没有直接使用C语言传统的字符串表示(已空字符结尾的字符数组,),而是自己构建了一种名为简单动态字符串的(SDS)的抽象类型,并将SDS用作Redis的默认字符串表示; 在Redis立马,C字符串只会作为字符串字面量(string litersl)用在一些无需对字符串值进行修改的地方; 当Redis需要的不仅仅是一个字符串面量,而是一个可以被修改的字符串值时,Redis就会使用SDS来表示字符串值,比如在Redis的数据库里面,包含字符串值的键值对在底层都...原创 2020-09-17 15:58:49 · 267 阅读 · 0 评论 -
判断Redis有序集合中是否存在某个成员的方法
原文链接:https://my.oschina.net/ZYaller/blog/1486963判断Redis有序集合中是否存在某个成员的方法方法一有序集合中,redis没有命令直接判断有序集合中是否存在某个成员,但可以借助ZLEXCOUNT命令实现:http://redis.cn/commands/zlexcount.htmlZLEXCOUNT key min max有序集合...转载 2019-11-22 16:21:40 · 5073 阅读 · 0 评论 -
redis
前言redis作为nosql家族中非常热门的一员,也是被大型互联网公司所青睐,无论你是开发、测试或者运维,学习掌握它总会为你的职业生涯增色添彩。当然,你或多或少已经了解redis,但是你是否了解其中的某些细节,本片文章将详细介绍redis基础,后续也会介绍其高级部分如、持久化、复制、集群等内容,希望对你有所帮助。自redis3.0发布已经3年了,redis目前官方提供的redis稳定版...转载 2019-09-18 10:53:39 · 3883 阅读 · 0 评论