Redis多API開發實踐

来源:https://www.cnblogs.com/hwlong/archive/2018/07/18/9332663.html
-Advertisement-
Play Games

一、Redis API支持 Python連接redis redis-py安裝方式 Python連接Redis redis連接分片集群 python連接redis sentinel Python String類型使用簡介 Python hash類型使用簡介 Python list類型使用簡介 Pyth ...


一、Redis API支持

Redis提供了各類開發語言的API,方便開發語言連接使用Redis。
https://redis.io/clients
官方網站提供了不同開發語言的API程式。

Python連接redis

https://redis.io/clients#python

官網中,給我們提供了很多種Python連接redis的API,我們通常選擇有“笑臉”並且帶有“星號”的使用
這裡我們推薦使用redis-py.

redis-py安裝方式

redis-py requires a running Redis server. See Redis's quickstart for installation instructions.

To install redis-py, simply:

$ sudo pip install redis
or alternatively (you really should be using pip though):

$ sudo easy_install redis
or from source:

$ sudo python setup.py install

Python連接Redis

redis-py提供的,python 連接及操作redis方式:
    redis-py提供兩個類Redis和StrictRedis用於實現Redis的命令。StrictRedis用於實現大部分官方的命令,並使用官方的語法和命令(比如,SET命令對應與StrictRedis.set方法)。
    Redis是StrictRedis的子類,用於向後相容舊版本的redis-py。 
    簡單說,官方推薦使用StrictRedis方法。不推薦Redis類,原因是他和咱們在redis-cli操作有些不一樣,主要不一樣是下麵這三個方面。

redis連接分片集群

(1) redis-py並沒有提供redis-cluster的支持,去github找了一下,有個叫redis-py-cluster的源碼,
但是和redis-py不是一個作者,地址為:https://github.com/Grokzen/redis-py-cluster
watch,star,fork還算可以。
(2) 安裝
   Latest stable release from pypi
$ pip install redis-py-cluster  
    or from source
$ python setup.py install
(3) 使用
>>> from rediscluster import StrictRedisCluster  
>>> startup_nodes = [{"host": "127.0.0.1", "port": "7000"}]  
>>> # Note: decode_responses must be set to True when used with python3  
>>> rc = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True)  
>>> rc.set("foo", "bar")  
True  
>>> print(rc.get("foo"))  
'bar'

python連接redis sentinel

>>> from redis.sentinel import Sentinel  
>>> sentinel = Sentinel([('localhost', 26379)], socket_timeout=0.1)  
>>> sentinel.discover_master('mymaster')  
('127.0.0.1', 6379)  
>>> sentinel.discover_slaves('mymaster')  
[('127.0.0.1', 6380)]  
>>> master = sentinel.master_for('mymaster', socket_timeout=0.1)  
>>> slave = sentinel.slave_for('mymaster', socket_timeout=0.1)  
>>> master.set('foo', 'bar')  
>>> slave.get('foo')  
'bar'

Python String類型使用簡介

String類型基本操作:
r.set('foo', 'Bar')
print (r.get('foo'))

r.mset(k1="v1",k2="v2")
r.mget('k1','k2')

r.incr('num')
r.get('num')
r.incr('num')
r.get('num')

Python hash類型使用簡介

#插入hash類型鍵值
r.hset("hash1", "k1", "v1")
r.hset("hash1", "k2", "v2")
# 取hash中所有的key
print(r.hkeys("hash1"))     
# 單個取hash的key對應的值        
print(r.hget("hash1", "k1"))
# 多個取hash的key對應的值
print(r.hmget("hash1", "k1", "k2"))
#批量設置
r.hmset("hash2", {"k2": "v2", "k3": "v3"})
#批量取出 
print(r.hget("hash2", "k2"))              # 單個取出"hash2"的key-k2對應的value
print(r.hmget("hash2", "k2", "k3"))      # 批量取出"hash2"的key-k2 k3
print(r.hmget("hash2", ["k2", "k3"]))     # 批量取出"hash2"的key-k2 k3對應的value 
#取出所有的鍵值對
hgetall(name)

Python list類型使用簡介

#設置列表:
r.lpush("list1", 11, 22, 33)
#查詢列表所有值
print(r.lrange('list1', 0, -1))
# 表示從右向左設置列表
r.rpush("list2", 11, 22, 33)
# 列表長度
print(r.llen("list2"))
# 切片取出值,範圍是索引號0-3
print(r.lrange("list2", 0, 3))

Python set類型使用簡介

# 往集合中添加元素
r.sadd("set1", 33, 44, 55, 66)
# 集合的長度是4
print(r.scard("set1"))
# 獲取集合中所有的成員
print(r.smembers("set1"))

Python sort set類型使用簡介

#對應的有序集合中添加元素
r.zadd("zset1", n1=11, n2=22)
r.zadd("zset2", 'm1', 22, 'm2', 44)
# 集合長度
print(r.zcard("zset1"))
# 集合長度
print(r.zcard("zset2"))
# 獲取有序集合中所有元素
print(r.zrange("zset1", 0, -1))
 # 獲取有序集合中所有元素和分數2
print(r.zrange("zset2", 0, -1, withscores=True))

更多內容請看:《Redis for Python開發手冊》

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • http://www.cnblogs.com/baixl/p/4170599.html ...
  • gets()函數 因為用gets函數輸入數組時,只知道數組開始處,不知道數組有多少個元素,輸入字元過長,會導致緩衝區溢出,多餘字元可能占用未使用的記憶體,也可能擦掉程式中的其他數據,後續用fgets函數代替。 fgets函數 一小段代碼舉例: (1) fgets函數一次讀入10 - 1個字元,如果少於 ...
  •   傳送文件描述符是高併發網路服務編程的一種常見實現方式。 "Nebula" 高性能通用網路框架即採用了UNIX域套接字傳遞文件描述符設計和實現。本文詳細說明一下傳送文件描述符的應用。 1. TCP伺服器程式設計範式   開發一個伺服器程式,有較多的的程式設計 ...
  • 在學習Celery之前,我先簡單的去瞭解了一下什麼是生產者消費者模式。 生產者消費者模式 在實際的軟體開發過程中,經常會碰到如下場景:某個模塊負責產生數據,這些數據由另一個模塊來負責處理(此處的模塊是廣義的,可以是類、函數、線程、進程等)。產生數據的模塊,就形象地稱為生產者;而處理數據的模塊,就稱為 ...
  • 並查集 並查集,在一些有N個元素的集合應用問題中,我們通常是在開始時讓每個元素構成一個單元素的集合,然後按一定順序將屬於同一組的元素所在的集合合併,其間要反覆查找一個元素在哪個集合中。這一類問題近幾年來反覆出現在信息學的國際國內賽題中,其特點是看似並不複雜,但數據量極大,若用正常的數據結構來描述的話 ...
  • Description 給定n個正整數a1,a2,…,an,求 的值(答案模10^9+7)。 給定n個正整數a1,a2,…,an,求 的值(答案模10^9+7)。 Input 第一行一個正整數n。 接下來n行,每行一個正整數,分別為a1,a2,…,an。 第一行一個正整數n。 接下來n行,每行一個正 ...
  • 最近爬蟲,爬個貓眼都被封了IP。。 分享幾個常見的User-Agent吧,複製粘貼過來的,謝謝原創。 明天後天,就這周吧,把貓眼,巨潮資訊,陽光網爬一下,然後再爬幾個有漂亮mm的網站,後面再做一個自己的翻譯器。 時間是擠出來的。。 ...
  • 今天碰到一個場景,就是一個JavaBean,有些屬性的值需要去資料庫其他表中獲取,這樣就需要調用其他dao方法得到這個值,然後再set進去。 可是問題來了,如果需要用這種方式賦值的屬性特別多的話,一個一個set進去就需要寫很多set方法,代碼不僅冗餘,而且很麻煩。 於是就想通過反射機制去自動set值 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...