专业编程基础技术教程

网站首页 > 基础教程 正文

二、redis 数据类型 redis中数据类型

ccvgpt 2024-10-12 13:48:08 基础教程 8 ℃

五种类型:字符串(string)、散列(hash)、列表(list)、集合(set)、有序集合(sorted set/zset)

1、字符串:string

二、redis 数据类型 redis中数据类型

字符串是redis中最基础的对象,是一个由字节组成的序列,它在redis中是安全的,允许存储图片、序列号数据。value可容纳512M的数据。

常见场景:存储验证码、统计访问数据、分布式锁、计数器等

常见操作:set、get、mset、mget、getset、setnx、setex、strlen、append、incr、incrby、decr、decrby、
位图:setbit、bitcount、bitop

# 设置key与value值,成功返回OK
set key value

# 获取key对应的value值,成功返回值,失败返回nil或null
get key

# 批量插入key与value信息,成功返回OK
mset {key}1 value1 {key}2 value2   
注:为防止插入的多个key会分配到不同的哈希槽,使用{}限制多个key放在同一个哈希槽中
异常会报:CROSSSLOT Keys in request don't hash to the same slot

# 批量查询key的value
mget {key}1 {key}2

# 返回key对应的值,并设置新值
getset key value

# 如果key不存在,则设置,如果key存在,则什么都不做
setnx key value

# 如果key存在,则设置;如果key不存在,则什么都不做
setex key value

# 获取value的长度
strlen key

# 追加value值,返回value最新长度
append key aaa

# 自增
incr key

# 自增指定数值,成功返回增加后的数值
incrby key 5

# 自减
decr key

# 自减指定数值
decrby key 5

#二进制计算: 
setbit k1 1 1
setbit k2 2 1
bitcount k1
bitop and andkey k1 k2 交集
bitop or orkey k1 k2 并集

2、散列:hash

以键值对的形式存储

常见场景:用户信息、商品介绍信息

常见操作:hset、hget、hmset、hmget、hgetall、hkeys、hvals、hexists、hlen、hsetnx、hdel

# 设置值,必须设定大key、小key和value值
hset key name zhangsan

# 获取value,必须指定大key和xiaokey
hget key name

# 设置多值
hmset key age 18 sex 1

# 获取多个指定的小key
hmget key age sex

# 获取大key下所有的key与value
hgetall key

# 获取所有的小key
hkeys key

# 获取所有的valuy
hvals key

# 判断某个小key是否存在
hexists key name

# 获取小key的个数
hlen key

# 设置小key的值,如果不存在,则设置;如果存在,不处理
hsetnx key name lisi

# 删除小key
hdel key

3、列表:list

列表是允许用户从两边进行插入和弹出,列表是由多个字符串值组成的有序可重复的链表。

常见场景:最新消息排行、消息队列

常见操作:lpush、rpush、lrange、llen、lindex、lpop、rpop、rpoplpush、

# 左进栈
lpush key v1 v2

# 右进栈
rpush key v1 v2

# 查询列表中的数据
# 下标从0开始,如果要读到最末尾,endIndex就是-1
lrange key startIndex endIndex
lrange key 0 -1

# 获取列表元素的个数
llen key

# 获取指定索引的元素,index表示索引
lindex key index
lindex key 5

#从左边弹出一个元素[获取最左边的元素,再删除它]
lpop key

#从右边弹出一个元素
rpop key

#从一个列表的右边弹出元素,再追到加另一个列表的左边
rpoplpush 源列表 目标列表

#移除count个的value值
lrem key count value

#删除names列表中2个tom,从左开始移除
lrem names 2 tom

4、集合:set

存储的是String类型的无序不重复数据。

常用场景:网站访问独立IP

常见操作: sadd、smembers、scard、spop、sdiff、sindex、sunion、sdiffstore、sindexstore、sunionstore、smove

#存值
sadd key a b c

#获取集合长度
scard key

#获取集合元素
smembers key

#判断元素是否在集合中。存在:返回1,不存在:返回0
sismember key a

#随机弹出一个元素
spop key

#随机弹出指定个数元素
spop key 2

#差集
sdiff key key1

#交集
sinter key key1

#并集
sunion key key1

#将交集结果存入到另一个集合中
#sdiffstore 存储结果的集合名 操作的集合一 操作的集合二
sdiffstore key2 key key1

#将交集结果存入到另一个集合中
sinterstore key2 key key1

#将并集结果存入到另一个集合中
sunionstore key2 key key1

#将key中的元素移动到key1
smove key key1 a

5、有序集合:sorted set

存储的是String类型的无序不重复数据,与set相同。每个对象会关联一个double类型的分数,可以根据这个分数来进行排序操作。

常用场景:排行榜、成绩排名

常见操作: zadd、zcard、zrange、

#向有序集合中增加元素
#zadd 集合名 分数1 名称1 分数2 名称2 ...
zadd key 10 a 11 b 14 c
#返回插入的数量

#获取集合中元素的数量
zcard key

#获取集合中指定区间的元素名称,如果后面的索引是-1,则返回所有元素名称
zrange key 0 -1

#获取集合所有的元素,包括名称和分数【从小到大排序】
zrange key 0 -1 withscores

#获取集合前两位元素的名称和分数
zrange key 0 1 withscores

#为集合中指定的名称的元素增加分数
zincrby key 50 zhangsan
#返回增加后的分数

#返回集合中指定名称的分数
zscore key a

#把myzset1和myzset2根据元素名称求出交集,并把相同名称的value加在一起,得到元素名称的新分数,存入到新集合中,成功返回的是交集的个数
#zinterstore 目标集合 操作集合的数量 集合一 集合二 ...
ZINTERSTORE key2 2 key key1

#zrangebyscore 集合名称 小分数 大分数 [withscores] [limit 第几条开始显示 显示数量]
#在不知道当前集合中最大值和最小值的情况下,-inf代表最小值   +inf代表最大值
#获取集合中所有元素名称及分数
zrangebyscore key -inf +inf withscores
#获取集合中第一个元素名称及分数
zrangebyscore key -inf +inf withscores limit 0 1
#获取集合中分数在10-15之间的所有元素名称及分数
zrangebyscore key 10 15 withscores
#获取集合中分数在10-100之间的前两位元素名称及分数
zrangebyscore key 10 100 withscores limit 0 2

#按从大到小的顺序进行排序,并获取前2位
zrevrangebyscore key +inf -inf withscores limit 0 2

#根据元素名删除元素
zrem key member [member...]

#获取集合中指定元素名称对应的索引
zrank key lisi

#删除指定分数区间的元素[10,20],删除成功返回删除的个数,否则返回0
zremrangebyscore key 10 20

最近发表
标签列表