日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

zincrby redis python_【Redis数据结构 序】使用redispy操作Redis数据库

發布時間:2024/10/8 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zincrby redis python_【Redis数据结构 序】使用redispy操作Redis数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊藍色“不太靈光的程序員”關注我喲加個“星標”,每天上午 08:00,干貨推送!本文依舊會對學習內容進行拆分,建議閱讀時間基本保持10分鐘內,想學習之前章節內容點擊《你不了解的Redis》閱讀所有章節內容。Redis數據結構系列是對Redis常用的String、List、Set、Sorted Set、Hashe和Stream6種數據結構進行介紹,并使用redis-py進行實踐操作。

Redis一個高性能的key-value數據庫

Redis的出現,很大程度補償了Memcached這類key-value存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。

Redis和Memcached類似,它支持存儲的value類型相對更多,Values常用的數據結構有String、List、Set、Sorted Set、Hashe、Stream 6種,當然不同類型有不同的特性,操作命令是不盡相同的。

redis-py是Python中操作Redis數據庫的常用模塊,模塊中命令函數基本上是與原命令命名一致,子命令都是作為命令的參數使用。

例如: SET命令

語法格式 :

SET key value [EX seconds] [PX milliseconds] [NX|XX]

對應的函數是:

set(self, name, value, ex=None, px=None, nx=False, xx=False, keepttl=False)注:keepttl 為Redis 6.0 的特性,可以暫不考慮注:模塊的execute_command是實際調用原命令的函數我們會結合python的redis模塊對這6種數據結構的操作進行講解,方便加深記憶。

Redis命令命名有以下特點:

  • 命令以S開頭的為集合操作命令

  • 命令以Z開頭的為有序集合操作命令

  • 命令以H開頭的為哈希集操作命令

  • 命令以X開頭的為流操作命令

例如:

  • INCRBY是字符串類型原子遞增的操作命令

  • ZINCRBY是有序集合類型的分數(權值)原子遞增的操作命令

  • HINCRBY是哈希集類型指定字段的數值的原子遞增的操作命令

1 Redis Server

Windows 下載 Redis-x64-3.0.501.zip 解壓,管理員權限使用cmd切換到解壓后的目錄下:

  • 手動指定配置文件啟動:redis-server.exe redis.windows.conf

  • 也可以直接雙擊redis-server.exe啟動

  • 安裝服務:redis-server.exe --service-install redis.windows.conf

  • 卸載服務:redis-server --service-uninstall

  • 開啟服務:redis-server --service-start

  • 停止服務:redis-server --service-stop

配置文件 redis.windows.conf

  • databases 可以設置db的數量,是大于0的任意整數,默認16

  • port 可以設置端口,默認6379

  • maxclients 設置最大連接數,默認10000

  • requirepass 設置連接密碼

啟動后是這樣的:

注:建議安裝RedisDesktopManager幫助學習

2 Python環境redis-py 2.X 和 redis-py 3.0的部分區別??1、數據庫連接方式不同在redis-py 2.X 中StrictRedis用于實現大部分官方的命令,Redis用于向后兼用舊版本,官方建議使用StrictRedis。在redis-py 3.0 中StrictRedis只是Redis的一個別名,建議使用Redis。2、數值類型不同redis-py 2.X 可以接收任何類型的輸入并強制轉換為字符串類型。redis-py 3.0 僅接受用戶數據作為字節、字符串、數字(int,long和float), 其他類型將引發DataError異常。在2.x中,當用戶輸入bool值或者None值是結果就不是預期的了,會強制轉換為“True”、“False”和“None”的字符串,這會導致各種隱藏錯誤類型。3、參數不同SETEX、LREM、TTL和PTTL命令的參數順序發生變化。MSET、MSETNX和ZADD命令的參數結構發生變化。注:后文中的所有redis-py都指代redis-py3.0pip install redis==3.5.1redis-py 兩種連接方式redis.Redisredis.StrictRedis正如上面提到的 StrictRedis只是Redis的一個別名,建議使用Redis。redis-py 連接池redis.ConnectionPoolredis-py 使用連接池來管理對一個redis server的所有連接,避免每次建立、釋放連接的開銷。redis-py 管道redis.Pipelinesredis-py 使用管道在單個請求中將多個命令緩沖到服務器,可以理解為數據庫事務。可以通過減少客戶機和服務器之間來回傳輸的TCP數據包的數量來提高性能。也可以減少因為客戶端宕機,導致的一個連續操作沒有完成而產生的異常。pipe?=?r.pipeline()pipe.x?...pipe.execute()Hello World我們創建分別創建user:1000:message、user:1001:message、user_1002_message三個key,都保存字符串 Hello World 并讀取它們。

# coding=gbk# 導入redis 模塊import redis
redis_pool = redis.ConnectionPool(
host='127.0.0.1',
port=6379,
db=0,
password='cbs123',
decode_responses=True)
r = redis.Redis(connection_pool=redis_pool)
sr = redis.StrictRedis(connection_pool=redis_pool)# 將鍵key設定為指定的"字符串"值
r.set("user:1000:message", "Hello World", ex=100)
sr.set("user:1001:message", "Hello World")
sr.set("user:1004:message", "Hello World", px=10000)
sr.set("user_1002_message", "Hello World")# 獲取key對應的數值
r.get("user:1000:message")
r.get("user:1001:message")
r.get("user_1002_message")"""
> True
> True
> True
> Hello World
> Hello World
> Hello World
"""

我們可以看到key在RedisDesktopManager使用冒號分隔的key是做了層次劃分的。

當我們要使用的redis做數據表的重要數據緩存時,user:1000:message 可以表示為 user表的id為1000的記錄中message的數據。存儲的key不多的話還比較好維護,有上萬個key在同一級命名空間中維護起來還是比較痛苦的。key的定義規則是見名知意,格式統一即可。當然你也可以做其他格式的定義,你可以理解就好。Redis通用命令見源代碼> 表示返回結果

# 導入redis 模塊import redis
redis_pool = redis.ConnectionPool(
host='127.0.0.1',
port=6379,
db=0,
password='cbs123',
decode_responses=True)
r = redis.Redis(connection_pool=redis_pool)# 通用操作 不區分 數據類型的# EXISTS key 檢查key值是否存在,成功返回1,不成功返回0(key對應的值不存在)
r.exists("user:1000:message")
r.exists("user:1002:message")"""
> 1
> 0
"""# TYPE key 返回key對應的值的類型,成功返回類型,不成功返回none(key對應的值不存在)
r.type("user:1000:message")
r.type("user:1002:message")"""
> string
> none
"""# TTL key 返回key對應的剩余存活時間,成功返回時長單位秒,不成功返回-1 key值不存在返回-2
r.ttl("user:1000:message")
r.ttl("user:1001:message")
r.ttl("user:1004:message")
r.ttl("user:1002:message")"""
> 100
> -1
> 10
> -2
"""# 設置超時時間,當時間到達后會被刪除# EXPIRE key seconds 超時時間,當時間到達后會被刪除,單位秒# PEXPIRE key milliseconds 超時時間,當時間到達后會被刪除,單位毫秒
r.expire("user:1000:message", 10)
r.pexpire("user:1001:message", 10)"""
> True
> False
> False
"""# PERSIST key 刪除key對應的超時時間,成功返回True,不成功返回False(key對應的值不存在)
r.persist("user:1000:message")
r.persist("user:1001:message")
r.persist("user:1002:message")"""
> True
> False
> False
"""# DEL key 刪除key對應的值,成功返回1,不成功返回0(key對應的值不存在)
r.delete("user:1000:message")
r.delete("user:1002:message")"""
> 1
> 0
"""

end

推薦閱讀:

  • 讓運維更簡單的7種定時任務實現方式
  • 細品28歲程序員退休創業背后的可怕故事
  • Python行業就業現狀
  • 基于Redis實現消息隊列(上)
  • 基于Redis實現消息隊列(中)
  • 基于Redis實現消息隊列(下)

如有收獲,點個在看,誠摯感謝

總結

以上是生活随笔為你收集整理的zincrby redis python_【Redis数据结构 序】使用redispy操作Redis数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。