zincrby redis python_【Redis数据结构 序】使用redispy操作Redis数据库
Redis一個(gè)高性能的key-value數(shù)據(jù)庫(kù)
Redis的出現(xiàn),很大程度補(bǔ)償了Memcached這類key-value存儲(chǔ)的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。
Redis和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,Values常用的數(shù)據(jù)結(jié)構(gòu)有String、List、Set、Sorted Set、Hashe、Stream 6種,當(dāng)然不同類型有不同的特性,操作命令是不盡相同的。
redis-py是Python中操作Redis數(shù)據(jù)庫(kù)的常用模塊,模塊中命令函數(shù)基本上是與原命令命名一致,子命令都是作為命令的參數(shù)使用。
例如: SET命令語(yǔ)法格式 :
SET key value [EX seconds] [PX milliseconds] [NX|XX]對(duì)應(yīng)的函數(shù)是:
set(self, name, value, ex=None, px=None, nx=False, xx=False, keepttl=False)注:keepttl 為Redis 6.0 的特性,可以暫不考慮注:模塊的execute_command是實(shí)際調(diào)用原命令的函數(shù)我們會(huì)結(jié)合python的redis模塊對(duì)這6種數(shù)據(jù)結(jié)構(gòu)的操作進(jìn)行講解,方便加深記憶。Redis命令命名有以下特點(diǎn):
命令以S開頭的為集合操作命令
命令以Z開頭的為有序集合操作命令
命令以H開頭的為哈希集操作命令
- 命令以X開頭的為流操作命令
例如:
INCRBY是字符串類型原子遞增的操作命令
ZINCRBY是有序集合類型的分?jǐn)?shù)(權(quán)值)原子遞增的操作命令
- HINCRBY是哈希集類型指定字段的數(shù)值的原子遞增的操作命令
1 Redis Server
Windows 下載 Redis-x64-3.0.501.zip 解壓,管理員權(quán)限使用cmd切換到解壓后的目錄下:
手動(dòng)指定配置文件啟動(dòng):redis-server.exe redis.windows.conf
也可以直接雙擊redis-server.exe啟動(dòng)
安裝服務(wù):redis-server.exe --service-install redis.windows.conf
卸載服務(wù):redis-server --service-uninstall
開啟服務(wù):redis-server --service-start
- 停止服務(wù):redis-server --service-stop
配置文件 redis.windows.conf
databases 可以設(shè)置db的數(shù)量,是大于0的任意整數(shù),默認(rèn)16
port 可以設(shè)置端口,默認(rèn)6379
maxclients 設(shè)置最大連接數(shù),默認(rèn)10000
- requirepass 設(shè)置連接密碼
啟動(dòng)后是這樣的:
注:建議安裝RedisDesktopManager幫助學(xué)習(xí)
2 Python環(huán)境redis-py 2.X 和 redis-py 3.0的部分區(qū)別??1、數(shù)據(jù)庫(kù)連接方式不同在redis-py 2.X 中StrictRedis用于實(shí)現(xiàn)大部分官方的命令,Redis用于向后兼用舊版本,官方建議使用StrictRedis。在redis-py 3.0 中StrictRedis只是Redis的一個(gè)別名,建議使用Redis。2、數(shù)值類型不同redis-py 2.X 可以接收任何類型的輸入并強(qiáng)制轉(zhuǎn)換為字符串類型。redis-py 3.0 僅接受用戶數(shù)據(jù)作為字節(jié)、字符串、數(shù)字(int,long和float), 其他類型將引發(fā)DataError異常。在2.x中,當(dāng)用戶輸入bool值或者None值是結(jié)果就不是預(yù)期的了,會(huì)強(qiáng)制轉(zhuǎn)換為“True”、“False”和“None”的字符串,這會(huì)導(dǎo)致各種隱藏錯(cuò)誤類型。3、參數(shù)不同SETEX、LREM、TTL和PTTL命令的參數(shù)順序發(fā)生變化。MSET、MSETNX和ZADD命令的參數(shù)結(jié)構(gòu)發(fā)生變化。注:后文中的所有redis-py都指代redis-py3.0pip install redis==3.5.1redis-py 兩種連接方式redis.Redisredis.StrictRedis正如上面提到的 StrictRedis只是Redis的一個(gè)別名,建議使用Redis。redis-py 連接池redis.ConnectionPoolredis-py 使用連接池來管理對(duì)一個(gè)redis server的所有連接,避免每次建立、釋放連接的開銷。redis-py 管道redis.Pipelinesredis-py 使用管道在單個(gè)請(qǐng)求中將多個(gè)命令緩沖到服務(wù)器,可以理解為數(shù)據(jù)庫(kù)事務(wù)。可以通過減少客戶機(jī)和服務(wù)器之間來回傳輸?shù)腡CP數(shù)據(jù)包的數(shù)量來提高性能。也可以減少因?yàn)榭蛻舳隋礄C(jī),導(dǎo)致的一個(gè)連續(xù)操作沒有完成而產(chǎn)生的異常。pipe?=?r.pipeline()pipe.x?...pipe.execute()Hello World我們創(chuàng)建分別創(chuàng)建user:1000:message、user:1001:message、user_1002_message三個(gè)key,都保存字符串 Hello World 并讀取它們。# coding=gbk# 導(dǎo)入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設(shè)定為指定的"字符串"值
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對(duì)應(yīng)的數(shù)值
r.get("user:1000:message")
r.get("user:1001:message")
r.get("user_1002_message")"""
> True
> True
> True
> Hello World
> Hello World
> Hello World
"""
# 導(dǎo)入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)# 通用操作 不區(qū)分 數(shù)據(jù)類型的# EXISTS key 檢查key值是否存在,成功返回1,不成功返回0(key對(duì)應(yīng)的值不存在)
r.exists("user:1000:message")
r.exists("user:1002:message")"""
> 1
> 0
"""# TYPE key 返回key對(duì)應(yīng)的值的類型,成功返回類型,不成功返回none(key對(duì)應(yīng)的值不存在)
r.type("user:1000:message")
r.type("user:1002:message")"""
> string
> none
"""# TTL key 返回key對(duì)應(yīng)的剩余存活時(shí)間,成功返回時(shí)長(zhǎng)單位秒,不成功返回-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
"""# 設(shè)置超時(shí)時(shí)間,當(dāng)時(shí)間到達(dá)后會(huì)被刪除# EXPIRE key seconds 超時(shí)時(shí)間,當(dāng)時(shí)間到達(dá)后會(huì)被刪除,單位秒# PEXPIRE key milliseconds 超時(shí)時(shí)間,當(dāng)時(shí)間到達(dá)后會(huì)被刪除,單位毫秒
r.expire("user:1000:message", 10)
r.pexpire("user:1001:message", 10)"""
> True
> False
> False
"""# PERSIST key 刪除key對(duì)應(yīng)的超時(shí)時(shí)間,成功返回True,不成功返回False(key對(duì)應(yīng)的值不存在)
r.persist("user:1000:message")
r.persist("user:1001:message")
r.persist("user:1002:message")"""
> True
> False
> False
"""# DEL key 刪除key對(duì)應(yīng)的值,成功返回1,不成功返回0(key對(duì)應(yīng)的值不存在)
r.delete("user:1000:message")
r.delete("user:1002:message")"""
> 1
> 0
"""
end
推薦閱讀:
- 讓運(yùn)維更簡(jiǎn)單的7種定時(shí)任務(wù)實(shí)現(xiàn)方式
- 細(xì)品28歲程序員退休創(chuàng)業(yè)背后的可怕故事
- Python行業(yè)就業(yè)現(xiàn)狀
- 基于Redis實(shí)現(xiàn)消息隊(duì)列(上)
- 基于Redis實(shí)現(xiàn)消息隊(duì)列(中)
- 基于Redis實(shí)現(xiàn)消息隊(duì)列(下)
如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝
總結(jié)
以上是生活随笔為你收集整理的zincrby redis python_【Redis数据结构 序】使用redispy操作Redis数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python把中文转英文_Python
- 下一篇: python判断是否是英文字母_用pyt