项目前导 学习笔记
一、redis-string
string 是 redis 最基本的类型,一个 key 对应一个 value (有点类似字典 Dictionary)。string 可以包含任何数据,最大不能超过 512M 。
1.1、创建值
set key value ---- 设置值(value 是字符串, 且重复设置可覆盖):set age 18
get key ---- 获取值:get age
mset key value [key value ...] ---- 设置多个值(注意键值对一一对应): mset age 18 sex 1 name li
mget key [key ...] ---- 获取多个值:mget name age sex
expire key second ---- 设置某值几秒后过期:expire name 3
setex key second value ---- set 与 expire 结合设置:setex class 10 1
append key value ---- 添加字段(在后面添加字符串):append age 666
del key ---- 删除:del sex
strlen key ---- 返回字符串长度:strlen name
1.2、数值计算
incr key ---- 增加:incr age
decr key ---- 减少:decr age
incrby key increment ---- 制定增加多少:incrby age 5
decrby key increment ---- 制定减少多少:decrby age 5
1.3、值的范围操作
getrange age 1 -1 ---- 获取指定区间范围内的值, 类似 between ... and ... 的关系
setrange age 1 22 ---- 从第几位开始替换, 下标从零开始(当开始位超出字符串长度时, 会用 \x00 代替中间缺失位)
# 从 0 到 -1 表示全部
二、redis-list(单值多value)
列表(list)是简单的字符串列表,按照插入顺序排序,可以添加一个元素列表的头部(左边)或者尾部(右边),它的底层实际是个 链表
。
2.1、lpush、rpush、lrange
# 从链表左边加入, 结构为 倒序排列
lpush list01 1 2 3 4 5
# 从链表右边加入, 结构为 正序排列
rpush list02 1 2 3 4 5
# 获取链表指定长度的值( 0 -1 表示全部 )
lrange list01 0 -1
2.2、lpop、rpop
# 移除最左, 删除元素 5
lpop list01 5
# 移除最右, 删除元素 1
rpop list01 1
2.3、lindex
# 看一下
lrange list01 0 -1
# 按照索引下标获得元素(下标从 0 开始)
lindex list01 1
2.4、llen
# 求列表长度
llen list01
2.5、lrem
# 删 N 个 value , 在 list01 中删除 2 个 1
# 遍历着删除
llen list01 2 1
2.6、ltrim
# ltrim key start stop
# 截取指定范围的值后在赋值给 key
# 截取 list01 从 0 到 2 的数据在重新赋值给 list01
ltrim list01 0 2
2.7、lset
# lset key index value
# 将 key 的第 index+1 位替换成 value
# 将 list01 中第一位换成 x
lset list01 0 x
2.8、linsert
# lset before/after pivot value
# 在 key 的 某值 前/后 加 value
# 在 list01 的 x 之前加字段 py
linsert list01 before x py
# 在 list01 的 x 之后加字段 thon
linsert list01 after x thon
2.9、rpoplpush
# rpoplpush source destination
# 将 source 中最后一个压入 destination 中第一位
lrange list01 0 -1
lrange list02 0 -1
rpoplpush list1 list2
三、redis-Hash
Hash 是一个键值对集合,是一个 string 类型的 field 和 value 的映射表,Hash 特别适合存储 对象
。
3.1、基本操作
hset user id 11 ---- 设值
hget user id ---- 取值
hmset user id 1 name li age 18 ---- 设多个值
hmget user id name age ---- 取多个值
hgetall user ---- 取全部键与值
hdel user id ---- 删除键及对应数据
3.2、hlen key
# 求长度
hmset customer id 2 name haha
hlen customer
3.3、hexists key
# key 里是否存在某键值对(不存在返回 0, 存在返回 1)
hexists age
hexists customer
3.4、hkeys、hvals
# 取所有键
hkeys user
# 取所有值
hvals user
四、redis-set(不重复的)
set 是 string 类型的无序集合。
4.1、sadd、smembers、sismember
sadd set01 1 2 2 3 3 ---- 创建并集合并添加数据, 自动去重
smembers set01 ---- 得到 set01
sismember set01 10 ---- 判断是否存在(存在返回 1, 不存在返回 0)
4.2、scard
# 获取集合里面的元素个数
scard set01
4.3、srem
# 删除集合中元素, 删除元素 3
srem set01 3
4.4、srandmember
# 随机读出几个数(如不指定读取个数, 则默认读 1 个)
sadd set01 4 7 9 10 6 5 o i 1
srandmember set01
srandmember set01 3
4.5、spop
# 随机删除数据
sadd set01 4 7 9 10 6 5 o i 1
spop set01
4.6、smove
# smove key1 key2 value
# 将 key1 中的 value 移动到 key2 中
smove set01 set02 2
4.7、数学集合类
sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
# 差集, 在 set01 中不在 set02 中
# 返回 4 5
sdiff set01 set02
# 交集, 在 set01 中也在 set02 中
# 返回 1 2 3
sinter set01 set02
# 并集
# 返回 set01,set02 中的值并去掉重复
sunion set01 set02
五、redis-Zset(不重复的)
Zset 是 string 类型的有序集合。因为可以排序,所有一般把用于排序的数据写在 键
的位置,且只能是数字类型。
5.1、zadd、zrange
# 如记录分数(分数 名字)
zadd zset01 100 v1 70 v2 90 v3 95 v4 80 v5
# 读取排序后的值
zrange zset01 0 -1
# 读取全部的键与值, 在后面添加 ( withscores )
zrange zset01 0 -1 withscores
5.2、zrangebyscore
# zrangebyscore key start end
# 根据开始, 结束位置来取值
zrangebyscore zset01 50 90
# 表示不包含结束位置取值
zrangebyscore zset01 60 (100
# 取出来的值分页, 在后面添加 ( limit 下标 条数 )
# 从第 1 条开始截取, 每页 2 条
zrangebyscore zset01 60 100 limit 0 2
zrangebyscore zset01 60 100 limit 2 2
zrangebyscore zset01 60 100 limit 4 2
5.3、zrem
# zrem key value
# 删除 value 对应的键值对
zrem zset01 v4
5.4、zcard、zcount、zrank
zcard zset01 ---- 求 zset01 的总条数
zcount zset01 80 90 ---- 求 80-90 的条数
zrank zset01 v2 ---- 返回 value 对应的下标, 从 0 开始
zrank zset01 v1