网站首页 > 基础教程 正文
五种类型:字符串(string)、散列(hash)、列表(list)、集合(set)、有序集合(sorted set/zset)
1、字符串:string
字符串是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
猜你喜欢
- 2024-10-12 Java开发你知道这些API事半功倍Redis必知必会的API
- 2024-10-12 关于Redis的知识点,你都学会了吗?
- 2024-10-12 「干货」Java后端开发高频面试题 java后端开发面试自我介绍
- 2024-10-12 redis常用命令总结(下) redis基本操作命令
- 2024-10-12 Redis常用简明命令 redis的命令大全
- 2024-10-12 Redis有序集合详解 redis在的有序集合中在数据量极少的情况下使用
- 2024-10-12 高性能的key-value数据库-Redis基本使用
- 2024-10-12 一、Redis基础和应用篇 redis相关知识
- 2024-10-12 NoSQL学习:初学Redis之Redis的数据模型
- 2024-10-12 一文掌握Redis常用API redis常用命令及详解
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)