redis 查看key的结构类型_Redis-1 数据类型与数据结构

cd4c7e46826940dac7b62d9bdbd00160.png

1 Redis 简介

Redis 是一个key-value的存储系统,使用ANSI C语言编写,key的类型是字符串,value的类型有:string字符串类型,list列表类型,set集合类型,sortset有序集合类型,hash类型,bitmap类型,geo地图坐标类型,stream流类型。Reids的命令不区分大小写,key value 区分大小写

2 Redis 底层数据结构

f4f0dbccd7342ef7c8df5f36069efa79.png

2.1 RedisDB 结构

typedef struct redisDb { 
	int id; //id是数据库序号,为0-15(默认Redis有16个数据库) 
	long avg_ttl; //存储的数据库对象的平均ttl(time to live),用于统计 
	dict *dict; //存储数据库所有的key-value 
	dict *expires; //存储key的过期时间 
	dict *blocking_keys;//blpop 存储阻塞key和客户端对象 
	dict *ready_keys;//阻塞后push 响应阻塞客户端 存储阻塞后push的key和客户端对象 
	dict *watched_keys;//存储watch监控的的key和客户端对象 
} redisDb;

2.2 RedisObject 结构

typedef struct redisObject { 
	unsigned type:4;//类型 五种对象类型  REDIS_STRING(字符串)、REDIS_LIST (列表)、REDIS_HASH(哈希)、REDIS_SET(集合)、REDIS_ZSET(有序集合)。
	unsigned encoding:4;//编码 4表示位数
	void *ptr;//指向底层实现数据结构的指针,指向具体数据
	//... 
	int refcount;//引用计数 
	//... 
	unsigned lru:LRU_BITS; //LRU_BITS为24bit 记录最后一次被命令程序访问的时间 
        //高16位存储一个分钟数级别的时间戳,低8位存储访问计数(lfu : 最近访问次数)
	//... 
} robj;

## 获取对象类型与编码
type key 返回对象类型(String...)
object encoding key 获取编码

3 Redis 数据类型以及使用场景

  1. String类型(放置字符串,整数,浮点数)

常用命令:

set key value  赋值k-v
get key  获取key对应value
getset key value 取值并赋值
setnx key value 当value不存在时采用赋值 【分布式锁】
set key value NX PX 3000 原子操作,px 设置毫秒数
append key value 尾部追加值
strlen key 获取字符串长度
incr key 递增数字 【乐观锁】
incrby key increment 增加指定整数
decr key 递减数字
decrby key decrement 减少指定整数

对应encoding:int(int数据类型) embstr(长度小于44个字节) raw(长度大于44个字节)

2. list列表类型(存储有序,可重复元素)

lpush key v1 v2 v3 ...  从左侧插入列表
lpop key 从列表左侧取出
rpush key v1 v2 v3 ... 从右侧插入列表
rpop key 从列表右侧取出
lpushx key value 将值插入到列表头部
rpushx key value 将值插入到列表尾部
blpop key timeout 从列表左侧取出,当列表为空时阻塞,可以设置最大阻塞时间,单位为秒
llen key 获取列表元素个数
lindex key
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值