文章目录
1. Redis 常用五大数据类型
1.1 Redis-Hash
-
hash是一个键值对集合
-
hash是一个string类型的field和value的映射表,hash特别适合存储对象
- hset/hget/hmset/hmget/hgetall/hdel
设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11
hget user id
hmset customer id 11 name sam age 26
hmget customer id name age
hgetall customer
hdel user id
2.hlen
求哈希长度
hlen customer
3.hexists key
hexists ---- 在key里面的某个值
存在返回1 ,不存在返回0
hexists customer name > 1
hexists customer age > 1
hexists customer high > 0
4.hkeys/hvals 查看Hash的字段和值
hkeys customer -> 查看所有字段
hvals customer -> 查看所有值
总结:hash的运用场景,例如:购物车(哪个用户添加了什么商品 添加购物车多少件)——>(用户、商品、数量)
carts user id :{goods id: count, goods id:count}
carts 1: {2(things1),3(things2)}
1.2 redis-set(不重复的)
Set(集合)
set是string类型的无序集合
1.sadd/smembers/sismember
sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3 去掉重复添加
smembers set01 得到set01
sismember set01 1 如果存在返回1 不存在返回0
2.scard
scard ---- 获取集合里面的元素个数
scard set01
3.srem key value
srem ---- 删除集合中元素
srem set01 3
smember set01 3已经被删除掉
4.srandmember key
srandmembe ---- 随机出几个数
sadd set02 1 2 3 4 5 6 7 8
srandmember set02 2
5.spop key
spop ---- 随机出栈
spop set01
6.smove key1 key2
sadd set03 x y z
smove set03 set01 x 将set03中的x 移动到set02中
7.数学集合类
sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02 返回 4 5 在第一个set中不在第二个set中
交集
SINTER set01 set02 返回 1 2 3
并集
SUNION set01 set02 返回set01 set02 中的值 去掉重复
总结:运用场景,例如:抽奖100人,利用spop随机出数。
1.3 redis-Zset
Zset(有序集合)
有序集合类型(Sorted Set)相比与集合多了一个排序属性score(分值),对于有序集合ZSet来说,每个存储元素相当于有两个值组成的,一个是有序集合的元素值,一个是排序值,有序集合的存储元素值也是不能重复的,但分值是可以重复的。
存储值: 老王 老李 老钱
分值:100 60 80
1.zadd/zrange
zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1
带分数返回 withscores
2.zrangebyscore key start end
zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70
zrangebyscore zset01 60 (90 表示不包含90
zrangebyscore zset01 (60 90 表示不包含60
zrangebyscore zset01 (60 (90 表示不包含60
zrangebyscore zset01 60 90 limit 1 2 从第一条开始截取2条
zrangebyscore zset01 60 90
3.zrem key
zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1
zrange zset01 0 -1
4.zcard/zcount key score 区间/zrank key values
zcard 求zset01 总条数
zcount zset01 60 90 求60-90个数
zrank zset01 v2 返回1 返回对应下角标,从0开始
2. Python操作Redis
2.1 redis安装及连接
安装Redis扩展
$ pip install redis
连接
r = redis