redis 操作数据
# 原创,转载请留言联系
先放一波 Redis命令文档:http://doc.redisfans.com/
redis 可以存储5中数据结构:
字符串string
哈希hash
列表list
集合set
有序集合zset
下面列出一点常用操作!
-
字符串String
字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
1.设置单个键值
set key value
例如:set name chichung
2.设置多个键值
mset key1 value1 key2 value2...
例如:mset name chichung gender man
# 注:m就是muti,多个
3.追加字符
比如你想插入name:chichung,不小心打漏了个g,怎么操作呢?
set name chichun
append name g
4.查看单个值
get key
例如:get name
5.查看多个值
mget key1 key2 key3...
例如:mget name gender
6.修改一个键的值
重新设置一个同名的键就行了。
set name zhicong
7.设置一个键值对,并让它过了某段时间自动删除
setex key seconds value
例如:setex name 10 chichung
表示过了10秒后删除 name:chichung
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
哈希hash
hash⽤于存储对象,对象的结构为属性、值 # 就是python中字典的结构
值的类型为string # 由于值的类型是string,所以不能储存字典的嵌套
1.添加单个属性
hset key field value
例如:设置 info 的属性 name 为 chichung
hset info name chichung
2.添加多个属性
hmset key field1 value1 field2 value2...
例如:hmset info name chichung gender man
3.查看所有某个键的的属性
hkeys key
例如:hkeys info
会返回属性名,name,gender
4.查看一个属性的值
hget key field
例如:hget info name
5.查看多个属性的值
hmget key1 key2...
例如:hmget info name gender
6.查看所有属性的值
hvals key
例如:hvals info
7.删除属性和值
hdel key field1 field2...
例如:hdel info gender
删除 info 键的属性 gender 和 gender 属性的值 man
8.查看一个key的全部属性和值
hgetall key
9.给指定的key,属性增加值。(如果原来没有这个属性的话,会创建)
hincrby key field 1
例如(field是1):原来key是{1:2},增加后变成{1:3}
如果原来没有key,会新增key:{1:1}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
列表list
列表的元素类型为string
按照插⼊顺序排序
1.在左侧插入数据
lpush key value1 value2 ...
例如:lpush ele a b c
那么他在 redis 数据库的排序是 c b a
2.在右侧插入数据
rpush key value1 value2...
3.从指定元素的前后插入数据
linsert key before 现有元素 新元素
rinsert key after 现有元素 新元素
例如:linsert ele before a 0
在 a 元素的前面插入 0
4.查看列表的元素
lrange key start_index end_index
例如:查看列表的全部元素
lrange ele 0 -1
5.修改指定元素的值
lset key index value
例如,把下标是3的元素修改为 apple
lset ele 3 apple
6.从左边开始,删除 n 个相同的元素
lrem key n value
例如,从左边开始,删除两个 a
lrem ele 2 a
7.从右边开始,删除 n 个相同的元素
lrem key -n value
例如,从右边开始,删除两个 b
lrem ele -2 b
8.删除列表中全部的某个元素
lrem key 0 value
例如,删除列表中全部的 c
lrem ele 0 c
9.截取列表的一段元素
ltrim key 0 4
截取列表元素,只保留前5位元素
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
无序集合set
元素为string类型
元素具有唯⼀性,不重复
说明:对于集合没有修改操作
1.添加元素
sadd key member1 member2...
例如:sadd ele a b c d e f g
2.获取所有元素
smembers key
例如:smembers ele
3.删除指定元素
srem key value
例如:srem ele g
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
有序集合zset
元素为string类型
元素具有唯⼀性,不重复
每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
说明:没有修改操作
1.添加元素
zadd key score1 member1 score2 member2 ...
例如:zadd ele 1 a 2 b 4 d 3 c
那么他的顺序是a b c d
2.获取指定范围内的元素
1.根据下标
zrange key start_index end_index
例如:获取有序集合的全部元素
zrange ele 0 -1
2.根据权重
zrangebrscore key min max
例如,获取权重是2-3之间的全部元素
zrangebyscore ele 2 3
3.返回某个元素的权重
zscore key member
例如,获取 c 的权重值
zscore ele c
4.删除有序集合的指定元素
zrem key member1 member2...
例如,删除有序集合的 c d
zrem ele c d
5.删除权重值之间的元素
zremrangebyscore key min max
例如,删除有序集合中权重为2-3的元素
zremrangebyscore ele 2 3
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
键命令
1.判断键是否存在
exists key
2.查看键对应的值的类型
type key
3.删除键值
del key1 key2...(写一个键就是删除一个)
例如:del name gender
4.让已经存在的一个键对,过了某段时间自动删除
expire key seconds
例如:expire name 10
表示10秒后删除 name 键
5.查看键对还有几秒删除
ttl key
例如:ttl name
注意:如果 key 是设置了倒计时删除的,ttl 命令可以看到它的剩余时间,结束后输出内容为-2!
如果 key 本来就没有设置倒计时删除的,ttl key 永远都是-1。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
与python交互
1.首先安装模块
pip3 install redis
2.代码模板如下:
from redis import StrictRedis if __name__ == '__main__': # 设置连接属性 sr = StrictRedis(host='127.0.0.1',port=6379) sr.set('name','chichung') ret = sr.get('name').decode() print(ret) sr.setex('age',10,20) # 实际上就是 redis 语句来操作,比较简单,不演示多了