python redis模塊筆記

import redis

host ='127.0.0.1'
passwd = 'HK139bc&*'

'''
1、連接Redis數據庫
'''
# (1)直連
red = redis.Redis(host=host,password=passwd,port=6379,db=0,decode_responses=True)
# decode_responses=True 直接返回字符串(默認返回的是bytes類型)
# db=0 指定庫,0-15,默認爲0
# port=6379 默認端口,默認是6378

# (2)連接池連接
pool = redis.ConnectionPool(host=host,password=passwd,db=0,decode_responses=True)
r = redis.Redis(connection_pool=pool)

'''
2、Sring類型存取
'''

# (1)單個設置、獲取值
# set(self, name, value, ex=None, px=None, nx=False, xx=False)
# get(self, name)

#參數:
#     set(name, value, ex=None, px=None, nx=False, xx=False)
#     ex,過期時間(秒)
#     px,過期時間(毫秒)
#     nx,如果設置爲True,則只有key不存在時,當前set操作才執行,同#setnx(key, value)
#     xx,如果設置爲True,則只有key存在時,當前set操作才執行
# 默認不存在則創建,存在則修改
red.set('name','xiaobai')
red.set('age','18')
r.set('sex','man')

result = red.get('name')
print()
print(r.get('age'))
# print(result.decode()) #decode是把bytes類型變成字符串
# 連接時加上可以加上decode_responses,直接返回字符串

# (2) 批量設置值、獲取值
r.mset({'addr':'gz','phone':'13033990099'})
res = r.mget('addr','phone')
print(res)

# (3)單獨設置過期時間
#設置過期時間(秒) setex(self, name, time,value)
r.setex('count',1,20)

#設置過期時間(毫秒) psetex(self, name, time_ms, value)
r.psetex('pcount',100,25)
print('count===',r.get('count'))
print('pcount===',r.get('pcount'))

# strlen(self, name)  返回key對應值的字節長度(一個漢字3個字節)
s = red.strlen('name')
print('s==',s)

# append(name, value) #在name對應的值後面追加內容
r.append('addr',',天河區')
addr = r.get('addr')
print('addr:',addr)

# r.delete('count') #刪除指定的key
# flushdb(self,asynchronous=False) 清空當前db中的數據,默認是同步。若開啓異步asynchronous=True,會新起一個線程進行清空操作,不阻塞主線程
# r.flushdb() #清除當前數據庫裏面所有的key
# r.flushall() #清除所有數據庫裏面的所有key
r.exists('name') #檢查redis的name是否存在
# keys(self, pattern='*') #根據* ?等通配符匹配獲取redis的name
print(r.keys())#獲取到當前 數據庫裏面有哪些key
# expire(self,name ,time) 爲某個name的設置過期時間
# rename(self, src, dst) #重命名
# move(self, name, db)) 將redis的某個name移動到指定的db下
# randomkey(self)#隨機獲取一個redis的name(不刪除)
# type(self, name) 獲取name對應值的類型

'''
3、Hash類型:一個name對應一個dic字典來存儲
'''
# hset(self, name, key, value) name對應的hash中設置一個鍵值對(不存在,則創建,否則,修改)
r.hset('scount','xiaobai',98)
r.hset('scount','xiaohei',68)

# hget(self, name, key) #在name對應的hash中根據key獲取value
xh = r.hget('scount','xiaohei')
print('xh==',xh)

# hgetall(self, name) #獲取name所有鍵值對
all = r.hgetall('scount')
print('all:',all)

# hmset(self, name, mapping) 批量設置
dict = {'red':'紅色','green':'綠色','blue':'藍色'}
r.hmset('color',dict)
print(r.hget('color','red'))

# hmget(self, name, keys, *args) 批量獲取
colors = r.hmget('color','red','blue')
print('colors:',colors)

# hlen(self, name) 獲取hash鍵值對的個數
c = r.hlen('color')
print(c)

# hkeys(self, name) #獲取hash中所有key
# hvals(self, name) 獲取hash中所有value
ks = r.hkeys('color')
vs = r.hvals('color')
print('ks:%s,vs:%s'%(ks,vs))

# hexists(self, name, key) 檢查name對應的hash是否存在當前傳入的key
e = r.hexists('color','red')
print(e)

# hdel(self, name, *keys) #刪除指定name對應的key所在的鍵值對,刪除成功返回1,失敗返回0
print(r.hdel('color','black'))

# hincrby(self, name, key, amount=1) 與hash中key對應的值相加,不存在則創建key=amount(amount爲整數),返回 相加後的總和
print(r.hincrby('color','num',amount=20))
print('totalNum:',r.hget('color','num'))

'''
4、list類型:一個name對應一個列表存儲
'''
# lpush(self, name, *values) 元素從list的左邊添加,可以添加多個
# rpush(self, name, *values) 元素從list右邊添加,可以添加多個
r.lpush('list1','value1','value2')
r.lpush('list1','v3','v4')
r.rpush('list1','v5','v6')
print(r.lrange('list',0,-1))

# lpushx(self, name, *values)  當name存在時,元素才能從list的左邊加入
# rpushx(self, name, *values) 當name存在時,元素才能從list的右邊加入

# llen(self, name) name列表長度
l = r.llen('list')
print('l:',l)

# linsert(self, name, where, refvalue, value) 在name對應的列表的某一個值前或後插入一個新值
#參數:
#     name: redis的name
#     where: BEFORE(前)或AFTER(後)
#     refvalue: 列表內的值
#     value: 要插入的數據
r.lpush('jj','aa','bb','cc')
print(r.lrange('jj',0,-1))
r.linsert('jj','BEFORE','aa','00') # 在ss列表元素‘ww’前面插入‘yy’
print(r.lrange('jj',0,-1))

# lset(self, name, index, value) 對list中的某一個索引位置重新賦值
r.lset('list',3,'newValue')
print(r.lrange('list',0,-1))


# lrem(self, name, value, count=0) 刪除name對應的list中的指定值
# 參數:
#    name:  redis的name
#    value: 要刪除的值
#    num:   num=0 刪除列表中所有的指定值;
#           num=2 從前到後,刪除2個;
#           num=-2 從後向前,刪除2個'''

r.lrem(name='list',count=0,value='v4')
print(r.lrange('list',0,-1))

# lpop(self, name) #移除列表的左側第一個元素,返回值則是第一個元素
print(r.lpop('list'))

# lindex(self, name, index) #根據索引獲取列表內元素
print(r.lindex('list',2))

# lrange(self, name, start, end) #分片獲取元素
print(r.lrange('list',2,5))

# ltrim(self, name, start, end) 移除列表內沒有在該索引之內的值
r.ltrim('list',0,10)
print(r.lrange('list',0,-1))

'''
5、set類型:集合是不允許重複的列表
'''
# sadd(self, name, *values) 給name對應的集合中添加元素
# scard(self, name) 獲取name對應的集合中的元素個數
# smembers(self, name) 獲取name對應的集合的所有成員
r.sadd('s','mail','qq','phone')
count = r.scard('s')
m = r.smembers('s')
print('count:',count)
print('mmb:',m)

# sdiff(self, keys, *args) 對比兩個集合,返回在第一個name對應的集合中且不在其他name對應的集合的元素集合
r.sadd('s1','mail','sms','ww')
r.sadd('s2','wx','bk','pp')
res1 = r.sdiff('s','s1','s2')
print(res1)

# sismember(self, name, value) 檢查value是否是name對應的集合內的元素
s1 = r.sismember('s1','mail')
print('s1:',s1)

# smove(self, src, dst, value) #將某個元素從一個集合中移動到另外一個集合
r.smove('s2','s','wx')
print(r.smembers('s'))

# spop(self, name) 從集合的右側移除一個元素,並將其返回  ??? 此方法待確認,Set是無序的,不能確定移除的是哪一個,慎用

print(r.smembers('s1'))
r.spop('s1')
print(r.smembers('s1'))


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章