redis 数据结构
- redis是key-value的数据结构,每条数据都是⼀个键值对
- 键的类型是字符串
- 注意:键不能重复
- 值的类型分为五种
字符串string
哈希hash
列表list
集合set
有序集合zset
str字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
str 类型
设置键值 set key value 键不存在添加 存在修改
设置过期 set key seconds value 秒
多个键值 set key1 value1 key2 value2
追加 append key value
获取键对的值 get key 不存在键 则返回nil
获取多个键的值 mget key1 key2 key3
键的操作:
查看多有键 keys*
查看包含a的键 keys 'a*'
判断键是否存在 exists key1
查看键a1值的类型 type a1
删除 键 a1 a2 : del key1 key2 ...
设置过期时间 expire key seconds
查看有效时间 ttl key
hash类型 对象的机构是 键、属性、值
设置单个属性 hset key field value 例 hset user name xiaoming
设置多个属性 hmset key field1 vlaue1 field2 value2
获取指定键的所有属性 hkeys key
获取一个属性的值 hget key field 例hget u2 'name'
获取多个属性的值 hmget key field1 field2 ...
获取键所有属性的值 hvals key
删除
删除属性,属性对应的值会被⼀起删除 hdel key field1 field2。。。
list类型 元素是字符串类型 按照插图顺序排序
可以对key设置过期时间
r1.expire('bili_'+ str(time_num), time=60*60*24*int(time_num))
在左侧插⼊数据 lpush key value1 value2 .
在右侧插⼊数据 rpush key value1 value2
在指定元素的前或后插⼊新元素 linsert key before或after 现有元素 新元素
在键为'a1'的列表中元素'b'前加⼊'3' linsert a1 before b 3
返回列表⾥指定范围内的元素lrange key start stop
获取键为'a1'的列表所有元素 lrange a1 0 -1
设置指定索引位置的元素 索引从左侧开始,第⼀个元素为0 lset key index value
删除指定元素 lrem key count value
lrem a2 -2 b b a b a b a 删除a2列表中的前两次出现的b 从后往前删
set 无序集合 元素是字符串 元素唯一不重复 没有修改操作
添加元素 sadd key member1 member2 ...
获取键'a3'的集合中所有元素 smembers key
删除指定元素 srem key srem a3 wangwu
zset 类型
每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
添加 zadd key score1 member1 score2 member2
zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan
例1:向键'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',权重分别为4、5、6、3
获取 返回指定范围内的元素 start、stop为元素的下标索引
zrange key start stop 获取键'a4'的集合中所有元素 zrange a4 0 -1
获取键'a4'的集合中权限值在5和6之间的成员 zrangebyscore a4 5 6
获取键'a4'的集合中元素'zhangsan'的权重 zscore a4 zhangsan
删除指定元素 zrem key member1 member2
删除权重在指定范围的元素zremrangebyscore a4 5 6
与Python交互StrictRedis对象⽅法
- 通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0
sr = StrictRedis(host='localhost', port=6379, db=0)
sr = StrictRedis(host='localhost', port=6379, db=0,decode_responses=True) 加上 decode_responses=True取出的数据是str 不加的话取出时bytes