python學習筆記(十二)python操做redis

一、python要操做redis 首先須要安裝redis模塊,而後導入才能使用python

      安裝:pip install redismysql

      導入:import redisredis

二、鏈接redissql

      r = redis.Redis(host='192.168.21.129',password='123456',db=1,port=6379)數據庫

      password在配置文件redis.conf中查看,port通常是6379,db可根據須要操做的數據庫進行選擇json

三、redis的增刪改查session

     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類型,如:[b'user3', b'user1', b'session: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中fetch

分析:一、連數據庫,查到數據庫裏面全部的數據,遊標類型要用pymysql.curosrs.DictCourspa

           二、查到全部數據 [ {"id":1,"passwd":"49487dd4f94008a6110275e48ad09448","username":"test","is_admin":1}]
          三、循環這個list,取到usernamer,把username當作key
          四、再把這個小字典轉成json,存進去就ok。

import pymysql,json,redis r = redis.Redis(host='192.168.21.129',password='HK139bc&*',db=1,port=6379) conn = pymysql.connect(host='192.168.21.129',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()
相關文章
相關標籤/搜索