redis Python客户端
redis-py
- 源码地址:https://github.com/WoLpH/redis-py
- redis命令:https://redis.io/commands/
- Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
1、字符串
- set --Redis中设置值,默认不存在则创建,存在则修改,批量设置mset
- get --获取键值,批量获取mget
- strlen --键值长度
- incr --自增,decr --自减
- append --键值追加内容
#redis_py客户端提供两个class:StrictRedis、Redis;如果你已经安装了hiredis模块,redis-py默认会尝试使用HiredisParser,
# Hiredis可以使得redis客户端解析服务端响应内容的速度提升10倍,git上有介绍,
# 所以我安装了hiredis(https://pypi.org/project/hiredis/)https://github.com/redis/hiredis-py
import redis
#decode_responses=True --redis取出的是字节,这个改成字符串
r = redis.StrictRedis(host="1.1.1.1",port=1111,password="11",decode_responses=True)
#字符串类型常用命令
r.set('foo', 'bar',ex = 10)
r.append("foo","zzz")
#判断键是否存在,return 1 for true and 0 for false
print(r.exists("foo"))
#ttl--剩余过期时间,生存时间
print(r.get("foo"),r.ttl('foo'))
#清除生存时间,变成永久key
r.persist("foo")
#没有设置生存时间返回-1
print(r.ttl("foo"))
r.delete("foo")
2、hash
- 一般h开头
import redis
r = redis.StrictRedis(host="",port=1111,password="",decode_responses=True)
#hash类型常用命令
#Redis 4.0.0开始弃用HMSET,请使用HSET
r.hset("myhash","field1","hello")
r.hset("myhash","aa","aaa")
r.hset("myhash","bb","bbb")
#设置key的生存时间
r.expire("myhash",10)
print(r.hget("myhash","field1"),r.ttl("myhash"))
li=["aa","bb"]
#批量get
print(r.hmget("myhash",li))
#hexists--hash中key是否存在,hgetall获取所有键值对,hlen--hash有多少个key,hkeys---name下所有的key,hvals--name下所有的value
print(r.hexists("myhash","aa"),r.hgetall("myhash"),r.hlen("myhash"),r.hkeys("myhash"),r.hvals("myhash"))
#删除hash键值对
r.hdel("myhash","aa")
3、list
- lpush - 从左边添加值;lpushx - 从左边添加,只能添加已有name的值
- rpush,rpushx - 从右边添加
- linsert - 在某个值前面或者后面添加值
- lset - 根据索引修改值
- llen - 查list的长度
- lrange - 根据索引开始与结束值获取list的值
- lindex - 根据索引获取list的值
- lrem - 删除list的值,其中的数值表示删除多少个值,0就是删除所有list中的这个值,1是一个,2是二个(从左到右)
- ltrim - 删除除从索引开始值到结束值之外的所有值
- lpop - 删除左边第一个值并返回,rpop就是右边的
import redis
r = redis.StrictRedis(host="",port=,password="",decode_responses=True)
#list类型常用命令
r.lpush("mylist",11,22,33,44,55,66,77,88,99)
r.lpushx("mylist","**")
print(r.lrange("mylist",0,1))
r.rpush("mylist",33)
r.linsert("mylist","before","11","00")
r.linsert("mylist","after","33","44")
r.lset("mylist",0,"00")
print(r.llen("mylist"),r.lrange("mylist",0,r.llen("mylist")-1),r.lindex("mylist",0))
r.lrem("mylist",0,"00")
r.ltrim("mylist",0,5)
r.expire("mylist",10)
print(r.ttl("mylist"),r.lpop("mylist"),r.rpop("mylist"),r.lrange("mylist",0,r.llen("mylist")-1))
r.delete("mylist")
4、set
集合不能出现重复的数据,无序的
- sadd - 添加
- scard - 获取集合的长度
- smembers - 获取集合所有值,返回的是集合{}
- sscan - 获取所有值,返回的是元组
- sscan_iter - 获取所有值,返回迭代器
- sdiff - 差值,前面减去后面,sdiffstore - 减去保存在第三个集合中
- sinter - 交集,两个集合中都存在的,sinterstore - 交集结果保存在第三个集合中
- sunion - 并集,sunionstore
- smove -移动元素
- sismember - 判断元素是否存在
- spop - 因为是无序的集合,所以是随机删除一个要元素
- srem - 删除元素
import redis
r = redis.StrictRedis(host="",port=,password="",decode_responses=True)
#set类型常用命令
r.sadd("myset","aa","bb","cc")
r.sadd("myset2","aa","dd")
print(r.scard("myset"),r.smembers("myset"),r.sscan("myset"),r.sdiff("myset","myset2"),r.sinter("myset","myset2"))
r.smove("myset2","myset","dd")
print(r.sunion("myset","myset2"),r.sismember("myset","dd"),)
r.spop("myset")
r.srem("myset","bb")
for i in r.sscan_iter("myset"):
print(i)
#keys是模糊查询所有的key
print(r.keys("myset*"))
#删除模糊查询出来的所有key
for i in r.keys("myset*"):
r.delete(i)
5、有序集合
有序集合的元素是包括值与分数的,分数用来排序
- zadd - 添加
- zcard - 集合长度
- zrange - 输出集合值,withscores是否输出分数,默认从小到大排序输出;zrevrange 从大到小排序
- zscan - 从小到大输出所有元素,zscan_iter 迭代器
- zrangebyscore - 指定分数输出元素,zrevrangebyscore
- zcount - 指定分数内有多少个元素
- zrank - 输出元素的索引
- zscore - 元素的分数
- zincrby - 增加元素的分数
- zrem - 输出元素,zremrangebyrank 根据索引删除,zremrangebyscore 根据分数删除
import redis
r = redis.StrictRedis(host="",port=,password="",decode_responses=True)
#zset类型常用命令
set_value = {"aa":1,"bb":2,"cc":3,"dd":8,"ee":23}
r.zadd("myzset",set_value)
print(r.zcard("myzset"),r.zrange("myzset",0,-1,withscores=True),r.zrevrange("myzset",0,-1),r.zscan("myzset"))
print(r.zrangebyscore("myzset",0,3),r.zrevrangebyscore("myzset",3,0),r.zcount("myzset",0,3),r.zrank("myzset","ee"),
r.zscore("myzset","bb"))
r.zincrby("myzset",6,"bb")
r.zrem("myzset","ee")
r.zremrangebyrank("myzset",0,0)
r.zremrangebyscore("myzset",0,3)
for i in r.zscan_iter("myzset"):
print(i)
r.delete("myzset")
公用常用命令
- keys(“myset*”) 模糊查询所有key
- type 查询key的类型
- exists 查询key是否存在
- delete 删除key
- expire 设置key的生存时间
- ttl 查询key的剩余生存时间
- rename 重命名
- persist 设置成永久key
如何查询redis命令使用方法
- 官网:https://redis.io/commands/
输入命令查询