资讯专栏INFORMATION COLUMN

redis数据结构

Travis / 2447人阅读

摘要:序正好写应用之分布式会话这篇文章,用到了。于是就补充一些的基本常识。对象当在新建键值对的时候,新建两个对象,一个是键对象,一个是值对象。

正好写SpringBoot应用之分布式会话这篇文章,用到了redis。于是就补充一些redis的基本常识。

redis对象

当在redis新建键值对的时候,新建两个对象,一个是键对象,一个是值对象。

键对象

一般键对象都是string对象

值对象

值对象根据情况分为

string对象(int、embstr、raw编码

list对象(ziplist、linkedlist编码

zset对象(ziplist、skiplist编码

hash对象(ziplist、ht编码

set对象(intset、ht编码

redisObject

redisObject是一个更大的对象,组装引用上述数据对象,同时还增加了type、encoding等信息

对象编码

每种类型的对象都至少使用了两种不同的编码,而不是固定一种编码,这样极大提高了redis的灵活性和效率。
比如list对象,在包含元素比较少的时候,redis底层使用ziplist编码实现:
1)ziplist比linkedlist更节约内存,并且在元素少的时候,在内存中以连续块方式保存,可以更可被载入内存
2)随着列表元素越来越多,使用ziplist的优势逐渐消失,对象底层将会实现从ziplist从linkedlist的转换

查看对象类型和编码

用type 变量名,可以查看值对象的类型

用object encoding 变量名,可以查看值对象真正存的数据的数据结构编码

常见编码

int(long类型整数)

embstr(embstr编码的简单动态字符串)

raw(简单动态字符串)

ht(字典)

linkedlist(双端链表)

ziplist(压缩列表)

intset(整数集合)

skiplist(跳跃表和字典)

对象常见操作 1、String
set/get var
incr/decr var
2、List
insert:lpush list a b c d,linsert list after d e
delete:rpop list,lrem list 1 a
update:lset list 1 g
search:lrange list 0 -1,lindex list 1,llen list
主要操作:

lpush、linsert、rpop、lrem、lset、lrange、lindex

3、Set
insert:sadd users linda persia jack
delete:srem users linda
update:
search:smembers users,scard users,spop,sismember users casesar

sdiff sa sb
sinter sa sb
sunion sa sb
主要操作

sadd,srem,smembers,scard,spop
sdiff,sinter,sunion

4、SortSet
insert:zadd scores 70 linda 100 persia 90 jack
update:zadd scores 88 linda,zincrby scores -3 persia
delete:zrem scores linda,zremrangebyscore scores (60 80,zremrangebyrank scores 0 1
search:
       zrange scores 0 -1 withscores
       zrevrange scores 0 -1 withscores
       zrangebyscore scores (10 +inf

       zcount scores (90 100
       zcard scores
       zscore scores persia
       zrank scores persia
       zrevrank scores persia
5、map
insert:hset kv t1 linda,hsetnx kv t4 houhou,hmset kv t2 hah t3 xixi
update:hset kv t1 linda1,hincrby kv t5 1
delete:hdel kv t1
search:hget kv t1
       hmget kv t2 t3
       hkeys kv
       hvals kv
       hlen kv 
       hexists kv t6  
对键的操作:
del key1 
expire key2 900
rename key3 key33
type key4
object encoding key5

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/36157.html

相关文章

  • redis Q&A

    摘要:是什么基于内存有客户端和服务器端非关系型数据库应用场景是什么缓存队列数据持久存储如何安装如何启动如何关闭客户端如何启动下载解压编译安装服务启动注意这种方式启动使用的是默认配置通过启动参数告诉使用指定配置文件使用下面命令启动服务关 redis 是什么? 基于内存 有客户端和服务器端 NoSQL非关系型数据库 redis 应用场景是什么? 缓存 队列 数据持久存储 redis 如何...

    saucxs 评论0 收藏0
  • redis Q&A

    摘要:是什么基于内存有客户端和服务器端非关系型数据库应用场景是什么缓存队列数据持久存储如何安装如何启动如何关闭客户端如何启动下载解压编译安装服务启动注意这种方式启动使用的是默认配置通过启动参数告诉使用指定配置文件使用下面命令启动服务关 redis 是什么? 基于内存 有客户端和服务器端 NoSQL非关系型数据库 redis 应用场景是什么? 缓存 队列 数据持久存储 redis 如何...

    JayChen 评论0 收藏0
  • SegmentFault 技术周刊 Vol.37 - 分布式缓存利器:Redis

    摘要:持久化到中反向代理的负载均衡基于的集群搭建如何实现从中订阅消息转发到客户端的扩展是阻塞式,使用订阅发布模式时,会导致整个进程进入阻塞。缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。 showImg(https://segmentfault.com/img/bVYE6k?w=900&h=385); Redis 是由意大利程序员 Salvatore Sanfilippo(昵称:a...

    kuangcaibao 评论0 收藏0
  • SegmentFault 技术周刊 Vol.37 - 分布式缓存利器:Redis

    摘要:持久化到中反向代理的负载均衡基于的集群搭建如何实现从中订阅消息转发到客户端的扩展是阻塞式,使用订阅发布模式时,会导致整个进程进入阻塞。缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。 showImg(https://segmentfault.com/img/bVYE6k?w=900&h=385); Redis 是由意大利程序员 Salvatore Sanfilippo(昵称:a...

    binaryTree 评论0 收藏0
  • Redis 4.0.10 中文文档(目录)

    Redis文档也可以在redis-doc github存储库中使用原始(计算机友好的)格式。 使用redis编程 Redis实现的完整的命令列表,以及每个命令的完整文档 Pipelining:学习如何同时发送多个命令,节省往返时间 Redis Pub/Sub:Redis是一个快速稳定的发布/订阅消息系统! Redis Lua脚本:Redis Lua脚本特性文档 Debugging Lua 脚本:...

    20171112 评论0 收藏0
  • CentOs7.3 搭建 Redis-4.0.1 单机服务

    摘要:搭建单机服务简介是完全开源免费的,遵守协议,是一个高性能的数据库。丰富的数据类型支持二进制案例的及数据类型操作。丰富的特性还支持通知过期等等特性。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。 CentOs7.3 搭建 Redis-4.0.1 单机服务 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数...

    lufficc 评论0 收藏0

发表评论

0条评论

Travis

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<