redis操作
一、操作字符串:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import redis r = redis.Redis(host = "iphost" ,port = 6379 ,password = "HK139bc&*" ,decode_responses = True ) #decode_responses为True 就不需要再用decode转了,否则返回的就是字节b'MLing' #字符串类型 r. set ( "lcl_session" , "MLing" , 500 ) #添加数据 session = r.get( "lcl_session" ) #查询数据 print (session) r.delete( "lcl_session" ) #删除数据 print (r.get( "lcl_session" )) #删除之后,再查询是None # new_session = session.decode() #decode_responses为True 就不需要再用decode转了 # print(new_session) 运行结果: MLing None |
1 | expire和expireat的区别: |
expire函数设置过期时间为10秒。10秒后,ex1将会失效
expireat设置一个具体的时间,15年9月8日15点19分10秒,过了这个时间,ex2将失效
1 2 3 4 5 6 7 8 9 10 | import redis import datetime import time pool = redis.ConnectionPool(host = 'iphost' ,port = 6379 ,db = 0 ) r = redis.StrictRedis(connection_pool = pool) extime = datetime.datetime( 2015 , 9 , 8 , 15 , 19 , 10 ) print r.expire( 'ex1' , 10 ) print extime.strftime( '%Y-%m-%d %H:%M:%S %f' ) print r.expireat( 'ex2' , extime) |
二、操作哈希
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #哈希类型 import redis r = redis.Redis(host = "iphost" ,port = 6379 ,password = "HK139bc&*" ,decode_responses = True ) #decode_responses为True 就不需要再用decode转了,否则返回的就是字节b'MLing' r.hset( "ssy_student" , "wanghe" , "xxx" ) r.hset( "ssy_student" , "lj" , "xxx11" ) r.hset( "ssy_student" , "cmc" , "xxx1122" ) r.hset( "ssy_student" , "ccx" , "xxx11223" ) # print(r.hget("ssy_student","cmc").decode()) #decode_responses为True 就不需要再用decode转了 print (r.hget( "ssy_student" , "cmc" )) #获取某个字段的值 print (r.hgetall( "ssy_student" )) #获取ssy_student下的所有数据 r.hdel( "ssy_student" , "ccx" ) #删除haxi中的某一个字段和它的值<br>r.delete('sys_student')#删除整个大key print (r.hgetall( "ssy_student" )) #获取ssy_student下的所有数据 运行结果: xxx1122 { 'c' : '1111' , 'd' : '2222' , 'ccx' : 'xxx11223' , 'wanghe' : 'xxx' , 'e' : '3333' , 'lj' : 'xxx11' , 'cmc' : 'xxx1122' } { 'c' : '1111' , 'd' : '2222' , 'wanghe' : 'xxx' , 'e' : '3333' , 'lj' : 'xxx11' , 'cmc' : 'xxx1122' } |
三、常用的方法
print(r.keys()) #所有的key
print(r.keys('*session*'))#模糊匹配
print(r.exists("lcl_session"))#key是否存在
print(r.type("lj_session"))
print(r.type("ssy_student"))
r.expire("ssy_student",50)#指定某个key的过期时间
r.flushall() #清空所有数据库里面的key
r.flushdb() #清空当前数据库里面的所有key
r.hmset(key,{'id':12,'name':78})#一次插入多个小key(hash)
四、redis迁移
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import redis r1 = redis.Redis(host = "10.24.3.99" ,port = 6379 ,password = "HK139bc&*" ,decode_responses = True ) r2 = redis.Redis(host = "10.24.3.99" ,port = 6379 ,password = "HK139bc&*" ,decode_responses = True ,db = 6 ) for k in r1.keys(): key_type = r1. type (k) if key_type = = 'string' : value = r1.get(k) r2. set (k,value) elif key_type = = 'hash' : value = r1.hgetall(k) # r2.hmset(k,value) # else : pass |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)