1、redis類型介紹:
redis有五種基本類型:字符串類型、散列類型、列表類型、集合類型、有序集合類型。
每種不同的類型,reids客戶端提供了很多不同的操作方法,下面即將演示最常用的一些基于python的操作
2、python使用pip安裝redis:
pip install redis
3、源碼分享:
# coding:utf-8
import redis
r=redis.Redis(host='127.0.0.1', port=6379, password='') #實例化一個redis對象出來
def redisOperation():
3.1、字符串類型:--Redis 字符串(String)
#Redis 字符串數據類型的相關命令用于管理 redis 字符串值
r.set("name","tony") #設置指定 key 的值
print(r.get("name")) #獲取指定 key 的值
r.incr("count") # 將 key 中儲存的數字值增一
print(r.get("count"))
r.decr("count") # 將 key 中儲存的數字值減一
print(r.get("count"))
r.delete("name") # 刪除指定 key 的值
3.2、散列類型:--Redis 哈希(Hash)
# Redis hash 是一個string類型的field和value的映射表,hash特別適合用于存儲對象。
r.hset("monut", "high", 2000) # 將哈希表 key 中的字段 field 的值設為 value
r.hsetnx("mount","name","tony") # 當字段不存在的時候才賦值
r.hexists("mount","high") # 判斷鍵值是否存在
r.exists("monut") # 判斷鍵是否存在
r.hkeys("monut") # 獲取所有哈希表中的字段
r.hvals("monut") # 獲取所有哈希表中的值
r.hlen("monut") # 獲取哈希表中字段的數量
r.hdel("mount", "high") # 刪除一個或多個哈希表字段
print("the queue is:", r.hget('ASYNCHRONOUS_CALLBACK_QUEUE', 'myname')) #獲取存儲在哈希表中指定字段的值
print("the hash is:",r.hgetall('ASYNCHRONOUS_CALLBACK_HASH')) # 獲取在哈希表中指定 key 的所有字段和值
3.3、列表類型:--Redis 列表(List)
# Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)
r.lpush("list1","ok") # LPUSH 將一個值插入了名為 list1 的列表當中
r.lpop("list1") # 移出并獲取列表的第一個元素
r.lrange("list1",1,4) # 獲取列表指定范圍內的元素
r.llen("list1") # 獲取列表長度
r.rpop("list1") # 移除列表的最后一個元素,返回值為移除的元素
r.rpush("list1",1000) # RPUSH 將一個值插入了名為 list1 的列表當中
3.4、集合類型:--Redis 集合(Set)
# Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據。
#Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。
r.sadd("set1",100,188) # 向集合添加一個或多個成員
r.sismember("set1",100) # 判斷 member 元素是否是集合 key 的成員
r.srem("set1",188) # 移除集合中一個或多個成員
r.smembers("set1") # 返回集合中的所有成員
r.scard("set1") # 獲取集合的成員數
3.5、有序集合類型:--Redis 有序集合(sorted set)
##Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。
#不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
#有序集合的成員是唯一的,但分數(score)卻可以重復。
#集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。
r.zadd("sortset",100,"mysql") # 向有序集合添加一個或多個成員,或者更新已存在成員的分數
r.zcard("sortset") # 獲取有序集合的成員數
r.zrem("sortset","mysql") # 移除有序集合中的一個或多個成員
r.zcount("sortset",20,100) # 計算在有序集合中指定區間分數的成員數
r.zrank("sortset","mysql") # 返回有序集合中指定成員的索引
r.zscore("sortset","mysql") # 返回有序集中,成員的分數值
r.zrangebyscore("sortset",10,100) # 通過索引區間返回有序集合成指定區間內的成員
r.dbsize()#返回當前數據庫的 key 的數量
if __name__=="__main__":
redisOperation()
4、源碼說明:
4.1、以上源碼是Python基于各種Redis數據類型的操作方法,用于獲取不同類型下Redis中指定鍵值,同時也支持對取出的值進行再次修改的操作。
4.2、在實際測試工作中會經常遇到查詢redis數據庫數據的需求,有了以上操作方法,可以方便工作中對redis數據的快速查詢與獲取。
redis-server.exe redis.windows.conf
redis-cli.exe -h 127.0.0.1 -p 6379
pip install redis
import redis
# 建立線程池,避免重復連接
pool=redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r=redis.Redis(connection_pool=pool)
def my_demo():
r.set("news1", "http://www.1.com")
r.set("news2", "http://www.2.com")
print(r.get("news1"))
print(r.get("news2"))
if __name__=='__main__':
my_demo()
關注我,堅持每日積累一個技巧,長期堅持,我們將會不斷進步。
#程序員#