1. 程式人生 > >python(十二)python操作redis

python(十二)python操作redis

mysq 配置文件 遊標 edi 參數 字典 PE 增值 pass

1、python要操作redis 首先需要安裝redis模塊,然後導入才能使用

安裝:pip install redis

導入:import redis

2、連接redis

r = redis.Redis(host=‘192.168.21.129‘,password=‘123456‘,db=1,port=6379)

password在配置文件redis.conf中查看,port一般是6379,db可根據需要操作的數據庫進行選擇

3、redis的增刪改查

redis中key所存儲的值類型有多種,主要說明string類型和hash類型。用命令 redis

127.0.0.1:6379> TYPE KEY_NAME可查看值的存儲類型。

以下是針對string類型的操作
r.set(user3,e10adc3949ba59abbe56e057f20f883e)#數據庫裏面新增一個值,修改也是set
r.setex(user1,e10adc3949ba59abbe56e057f20f883e,300)#數據庫裏新增一個值,並且設置key的失效時間,最後這個參數是秒
r.set(session:user1,{"seessionid":"a5dfcb047721e02a6f8bff779c856165","login_time":"201805081820
"})#新增值,值都在一個session文件夾裏面存儲 print(r.get(user1))#獲取對應key的值,返回的類型是byte類型,需要解碼 print(r.get(user1).decode())#獲取到的value值解碼 print(r.get(session:user1).decode()) print(r.keys())#獲取所有的key,存在一個list裏面,元素是byte類型,如:[buser3, buser1, bsession:user1] #獲取所有的key,並且解碼輸出 list = [k.decode() for k in r.keys()] print(list) #輸出如:[
user3, user1, session:user1] r.delete(user3)#刪除指定的key #刪除所有的key需要循環 for k in r.keys(): r.delete(k)
以下是哈希類型  hash操作,嵌套字典
r.hset(info,張三,北京,本科,測試工程師)#hash類型存儲方式會有兩個key,大key(info)和小key(張三),但無法設置小key的失效時間
r.hset(info,李四,湖北,博士,Boss)
r.hset(info,王五,江西,博士,CEO)
r.hset(login_mll,test1,{"seessionid":a5dfcb047721e02a6f8bff779c815165,"login_time":201805051820})
print(r.hget(info,張三).decode())  #指定大key和小key獲取對應的數據
print(r.hgetall(info))  #獲取裏面所有的k和-v,所有的K,V存儲在字典裏,但是是byte類型

# 獲取裏面所有的k和-v,所有的K,V存儲在字典裏,並且解碼輸出
info  = r.hgetall(info)
new_info = {}
for k,v in info.items():
    new_info[k.decode()] = v.decode()
print(new_info)

r.hdel(info,張三)  #刪除指定key
r.delete(info)  #刪除整個key
r.expire(info,100) #第一個key設置失效時間,無法設置小key的失效時間
print(r.ttl(info))#獲取key的失效時間
print(r.type(info))  #查看key是什麽類型的

小練習:將數據庫中某個表的數據導入到redis中

分析:1、連數據庫,查到數據庫裏面所有的數據,遊標類型要用pymysql.curosrs.DictCour

2、查到所有數據 [ {"id":1,"passwd":"49487dd4f94008a6110275e48ad09448","username":"niuhayang","is_admin":1}]
3、循環這個list,取到usernamer,把username當做key
4、再把這個小字典轉成json,存進去就ok。

import pymysql,json,redis
r = redis.Redis(host=118.24.3.40,password=HK139bc&*,db=1,port=6379)
conn = pymysql.connect(host=118.24.3.40,user=jxz,passwd=123456,db=jxz,charset=utf8)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(select * from my_user;)
all_data = cur.fetchall()  #數據庫某表裏面所有數據,輸出為list形式,list中每個元素為表中的每行數據,每行數據為字典形式
#如:[{username: niuniu, is_admin: 0, id: 0, passwd: niuniu}, {username: xiaohei1234, is_admin: 0, id: 0, passwd: aA123456}, {username: gyx, is_admin: 0, id: 0, passwd: 123456}

for data in all_data: #data為表中每行數據,是字典 k = data.get(username) #將username的值獲取,作為小key r.hset(stu_info_mkk,k,json.dumps(data)) #將data字典轉為json字符串,新增到redis中 cur.close() conn.close()

python(十二)python操作redis