Redis学习(02)列表、集合、Hash、Zset

Redis列表(List)

List是单键多值,字符串列表,按照插入顺序可以将一个元素插入列表的头部或者尾部。

底层是双向链表

List常用命令

lpush/rpush <key><value1><value2><value3> 从左侧或右侧插入数据
lpop/rpop <key> 从左侧或右侧吐出一个值(值在键在,值亡键亡)
rpoplpush <key1><key2> 从key1的右侧吐值,放到key2的左边
lrange <key><起始位置><结束位置> 范围内取值(若设置范围0 -1 取出所有值)
lindex <key><value> 按照索引下标获取元素(从左到右)
llen <key> 获取列表长度

linsert <key> before/after <value> <newvalue> 在某个key的某个值前面或者后面插入新值
lrem <key><n><value> 从左边删除n个value
lset <key><index><value> 将列表key下标为index的值替换为value

List的数据结构

List的数据结构是快速链表(quick list)

在列表元素较少时,使用连续的一块内存,此时结构是压缩列表(ziplist),当数据量较多时,将多个压缩列表进行链接,才会转为quick list。

Redis将多个ziplist使用双向指针进行串联。从而具有快速的插入删除功能,不会有太大的空间荣誉。

Redis集合(Set)

Redis中set的特性是具有自动排重

set是string类型中的无序集合

底层是value为null的hash表。

添加、删除、查找的复杂度是O(1)

Redis集合相关操作

sadd <key><value1><value2> 往key中添加元素
smembers <key> 取所有值
sismember <key> <value> 判断某个set中是否存在某个值
scard <key> 返回集合元素个数
srem <key><value1><value2>... 删除集合中某个元素
spop <key> 随机吐出一个值
srandmember <key><n> 随机从集合取n个值(不删除)

smove <source><destination><value> 将集合中的一个值从一个集合移动到另一个集合
sinter <key1><key2> 返回两个集合交集
sunion <key1><key2> 返回两个集合并集
sdiff <key1><key2> 返回两个元素差集(key1有 key2无)

Redis集合的数据结构

set的数据结构是dict字典

字典基于哈希表实现。内部是hash结构,所有value指向同一个位置。

Redis哈希(Hash)

Redis Hash 是一个键值对集合。

Redis Hash 是一个string类型的field和value映射表,用于存储对象。

Redis哈希相关操作

hset <key><field><value> 给key集合中的<field>键赋值为value
hget <key1><field> 取值
hmset
hexists <key><field> 查看是否存在某个值是否存在,0标识不存在,1标识存在
hkeys <key> 查看所有的field
hvals <key> 查看所有的value
hincrby <key><field><步长>
hsetnx <key><field><value> 将哈希表中的field设置为value(只能不存在该字段时才可以)

注意:

当Hash类型长度短时,采用压缩列表Ziplist,当长度长的时候,采用hashtable哈希表

Redis的Zset(有序集合)

Zset与set显示,没有重复元素!

同时有序,每个成员有score,利用评分进行排序。

Zset相关操作

Zadd <key><score1><value1><score2><value2>...  将一个或者多个值元素加入有序表的key中
zrange <key><> 0 -1 withscores 查看<start>到<stop>之间的元素
zrangebyscore <key> <start> <value> 【withscores】 查看某个范围的结果集
zrevrangebyscore <key> <start> <value> 按照从大到小的排列
zincrby <key><incremente><member> 让某个值进行增加
zrem <key><value> 删除某个元素
zcount <key><min><max> 统计分数区间内的元素个数
zrank<key> <value> 返回该值在集合中的排名

案例:

利用zset实现一个文章访问量的排行榜?


Zset的数据结构

底层的数据结构是利用了两种:

1、Hash,hash的作用是关联元素value与score。

2、跳跃表:给元素value进行排序。

跳跃表

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值