redis:常用的数据类型

Hash

本质上就是一个HashMap,也就是嵌套了一个HashMap,相当于

Map> hash = new HashMap<>();

适合存储类这样的数据,由于值本身又是一个Map,因此可以在此Map中放入类的各种属性和值,以实现一个Hash数据类型存储一个类的数据

添加一个hash类型的数据

hset [<字段> <值>]...

获取数据

hget <字段>
hgetall -- 如果想要一次性获取所有的字段和值

hvals  -- 获取所有的值

判断某个字段是否存在

hexists <字段>

删除字段

hdel

统计键值对的数量

hlen

注意:Hash中只能存放字符串值,不允许出现嵌套的的情况

List

它就是一个列表,在列表中存放一系列的字符串,它支持随机访问,支持双端操作,就像Java中的LinkedList

直接向一个已存在或是不存在的List中添加数据,如果不存在,会自动创建

-- 向列表头部添加元素
lpush ...
-- 向列表尾部添加元素
rpush ...
-- 在指定元素前面/后面插入元素
linsert before/after <指定元素>

获取元素:下标可以使用负数来表示从后到前数的数字,像python

-- 根据下标获取元素
lindex <下标>
-- 获取并移除头部元素
lpop
-- 获取并移除尾部元素
rpop
-- 获取指定范围内的
lrange start stop

-- 获取列表a中的全部元素
lrange a 0 -1

支持阻塞操作,类似于生产者和消费者,比如想要等待列表中有了数据后再进行pop操作

-- 如果列表中没有元素,那么就等待,如果指定时间(秒)内被添加了数据,那么就执行pop操作,如果超时就作废,支持同时等待多个列表,只要其中一个列表有元素了,那么就能执行
blpop ... timeout

Set和SortedSet

它不允许出现重复元素,不支持随机访问,但是能够利用Hash表提供极高的查找效率

向Set中添加一个或多个值:

sadd  ...

查看Set集合中有多少个值:

scard 

判断集合中是否包含:

-- 是否包含指定值
sismember  
-- 列出所有值
smembers 

集合之间的运算:

-- 集合之间的差集
sdiff  
-- 集合之间的交集
sinter  
-- 求并集
sunion  
-- 将集合之间的差集存到目标集合中
sdiffstore 目标  
-- 同上
sinterstore 目标  
-- 同上
sunionstore 目标  

移动指定值到另一个集合中:

smove  目标 value 

移除操作:

-- 随机移除一个幸运儿
spop 
-- 移除指定
srem  ...

那么如果要求Set集合中的数据按照指定的顺序进行排列,这时就可以使用SortedSet,它支持为每个值设定一个分数,分数的大小决定了值的位置

可以添加一个带分数的值:

zadd  [ ]...

同样的:

-- 查询有多少个值
zcard 
-- 移除
zrem  ...
-- 获取区间内的所有
zrange  start stop

由于所有的值都有一个分数,我们也可以根据分数段来获取:

-- 通过分数段查看
zrangebyscore  start stop [withscores] [limit]
-- 统计分数段内的数量
zcount   start stop
-- 根据分数获取指定值的排名
zrank  

redis基本操作命令 - 简书

你可能感兴趣的:(redis,数据库,缓存)