python操作redis

今天说下在python中如何连接redis及如何操作redis中的数据。

redis大家都知道,一般用来做缓存数据库,里面的数据的存储格式是key-value形式的。

首先导入redis模块,使用该模块操作redis数据库。

import redis
r = redis.Redis(host='118.24.5.90', password='12345*', db=5)

以上语句生成了redis对象r,后面就可以对redis进行增删改查操作。在redis里常用的数据格式有两种,string和hash。下面分别介绍下这两种数据格式的操作方法。

1,string类型。

#新增数据操作

1)r.set('luotuofeile', 'abcde') #在redis里会新增一条string类型的数据,key为'luotuofeile',value为'abcde'。
2)r.set('luotuofeile:user01', 'abcde') #在redis里会新增一条string类型的数据,key为luotuofeile:user,value为'abcde'。且所有key为'luotuofeile:'开头的字符串的数据都会被放到一个名为'luotuofeile'的文件夹下,方便管理,如图。

如果需要设置过期时间,可以加上参数ex=,r.set('luotuofeile', 'abcde',ex=60)过期时间60秒,或者

r.expire('luotuofeile',30) #指定过期时间

 

3),可以把任何数据类型转变为字符串存放在value中,如:

d = {"id":1,"username":"wangcan1","password":"8b634156edde77e407764d5166e34d20","is_admin":'骆驼飞了'}
r.set('luotuofeile:user03', json.dumps(d, ensure_ascii= False)) #转化为json字符串时要注意加上ensure_ascii参数,以免中文显示不了

#查询数据操作

values1 = r.get('luotuofeile:user01')
print(values1)
print(type(values1))

运行结果:

b'abcde'
<class 'bytes'>

可以看到查询结果是bytes类型,所以必须使用decode解码才能转换为str类型

values1 = r.get('luotuofeile:user01')
values1 = values1.decode()
print(values1)
print(type(values1))

运行结果:

abcde

<class 'str'>

还有个办法可以使返回数据直接返回str类型,即在创建redis对象时加上decode_responses=True参数,即:

r = redis.Redis(host='118.24.3.40', password='HK139bc&*', db=5, decode_responses=True)

这样redis返回的数据直接就是str类型。

查询操作还有其他方法:

r.keys() #该方法查询所有key,返回一个list,也支持模糊查询,r.keys('luotuofeile:*') 

#修改数据

修改数据与新增数据方法相同,已存在hash类型的数据后,再修改为string,可以修改,不会报错

#删除数据

r.delete('luotuofeile:user01')
values1 = r.get('luotuofeile:user01')
print(values1)

运行结果:

None

删除操作另外还有两个方法:

r.flushdb() #删除当前连接数据库的所有数据
r.flushall() #删除所有数据库的数据

2,hash类型

#新增操作

r.hset('luotuofeile', 'user01', 'abcdefg') #无法设置过期时间
r.hset('luotuofeile', 'user02', '12345678')

#查询操作

r.hget('luotuofeile', 'user01') #返回abcdefg
values = r.hgetall('luotuofeile') #返回键值是luotuofeile的所有数据,key-value组成字典返回:
{'user01': 'abcdefg', 'user02': '12345678'}

注意一点,如果查询的键值不是hash格式的数据,而是string类型的,将会报错:
redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value

#修改操作

修改操作和新增操作一样,需要注意:已存在string类型的key时,再次修改hash类型数据会报错不能覆盖修改

redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value

#删除操作

根据指定的key删除

r.hdel('luotuofeile','user01')

删除所有key

r.delete('luotuofeile') #该方法不区分string或者hash类型全都会删除。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值