python操作redis
举个例子,就是下面这种
我的账户的津贴的余额,是放在DB0的cashBack里的,每一个key的组成为
渠道id:userid
value则为该账户的余额
"""
@File : MyRedis.py
@Modify Time @Author @Version
------------ ------- --------
@Desciption:
Hash:是一个键值(key=>value)对集合
String:string 是 redis 最基本的类型,一个 key 对应一个 value。
List:列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
Set:string 类型的无序集合
zset: zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序,set的成员是唯一的,但分数(score)却可以重复。
至少从我现在的需求来说,大部分时候操作redis都是有指向性的,就是通过数据的拼接,已经可以确定了一条数据,所以我们演示的操作也都是有指向性的
"""
import redis
def get_redis_conn():
# 获取数据库链接
r = redis.Redis(host='r-xxx.redis.rds.aliyuncs.com', port=6379, db=0,
password='xxx')
return r
def update_or_add_hash():
r = get_redis_conn()
# 注意redis接受的是bytes类型的,所有我们需要转换一下
name = bytes('cashBack', encoding="utf8")
platform_type = 10066001
user_id = 1925051598
account_float = 202
key = bytes(f'{platform_type}:{user_id}', encoding="utf8")
print(f'正在刷入redis的key是{key}')
# hsetnx(name, key, value) 当name对应的hash中不存在当前key时则创建(相当于添加),res=1则为成功,等于0则为插入失败
res = r.hsetnx(name, key, account_float)
if not res:
print(f"{user_id}在redis中已经存在!")
r.close()
def insert_hash():
r = get_redis_conn()
name = bytes('cashBack', encoding="utf8")
platform_type = 10066001
user_id = 1925051598
account_float = 202
key = bytes(f'{platform_type}:{user_id}', encoding="utf8")
print(f'正在刷入redis的key是{key}')
# hset:没有就新增,有的话就修改,,res=1则为成功,等于0则为插入失败
res = r.hset(name, key, account_float)
print(res)
r.close()
# 删除 hdel(name,*keys)
if __name__ == "__main__":
update_or_add_hash()
上面的例子中我们将操作封装成了方法,只是为了演示起来方便,但是对于我来说,操作redis的场景并不多,所以一般是将获取redis链接和操作redis放到一起,并不会单独抽象出来。
至于更全的类型更多的操作,我们可以百度搜索“python操作redis”,在菜鸟教程中查看,遇到哪个用哪个就行了。