㈠ windows怎麼清空redis緩存
1. 加內存
2. 縮短(或設置)數據過期時間,以釋放內存
3. redis集群
㈡ 在不影響性能的情況下,怎麼快速批量刪除redis數據
業務場景:redis數據切換到Oracle,取消持久化,redis只做緩存
具體需求:從redis從庫里獲得了400w個無過期時間的hashkey,需要在主庫中將其刪除
矛盾點:
1.如果直接批量刪除會導致redis擁塞,影響正常業務
2.如果每刪除一個key,sleep50ms,不會影響業務,但是根據經驗要跑兩天
最終問題:在不影響性能的情況下,怎麼快速批量刪除redis數據?
Redis刪key刪得飛快,400w也不在話下。我懷疑其實瓶頸在於網路。
如果你是一個一個key刪的,每次發送一個命令都會導致客戶端等待redis的回復,浪費了大量網路帶寬。
可以試試用pipelining/transactions。在不飽和redis端網路帶寬的前提下,以最大速度發送命令,然後一次執行。
如果這都不行的話,可以寫一個Lua腳本,識別並刪除無用的key,發送到redis用eval執行。這樣應該不會阻塞網路。
如果這樣還是影響業務的話。。終極解決方案是創建一個master/slave,在slave上刪除key,而將請求用master處理。刪完key之後把slave晉升成master,再將請求轉向它。
2014年07月24日回答
滕亦飛1.3k
嘗試下 redis 的 eval 命令。
例如刪除 old-fashioned: 開頭的所有 KEY
eval "redis.call('del', unpack(redis.call('keys','old-fashioned:*')))" 0
如果單次刪除性能消耗大,可以考慮分批刪除。
㈢ 深入了解Redis操作五大數據類型常用命令
我們知道Redis默認有16個資料庫,默認是第0個資料庫,那麼如果在需要對資料庫進行切換的時候,我們就可以使用下面這個命令:
使用如下命令進行切換
如果想要清除指定某一個資料庫的數據
清除所有資料庫的數據
接下來這個命令應該是最常用的了
平常在開發中,我們還需要經常對key進行判斷,判斷其是否存在
因為我們設置的緩存數據一般都不能是永久的,這個時候就需要我們在存儲數據的時候,就為其設置過期時間。
string類型是Redis中五大基本數據類型之一,這也是最常使用到的一個數據類型,所有很多小夥伴們對Redis的認識和操作就僅僅的停留在了對Redis的操作層面,但是你是否知道string類型中的相關命令,還是有非常多實用的
接下來先看一下對string類型進行基本存儲和獲取的命令。
如果我們存儲的string中的內容是數字的話,我們也可以對其進行增或減操作,Redis可以自動的對字元串進行相關的操作。實現的命令如下:
使用msetnx時,同時設置一個或多個 key-value 對,當且僅當所有給定 key都不存在時才成立。
getset命令從字面意思就可以看出來,他的作用是先get再set。
總結string類似的使用場景:
在使用list類型進行存取的時候,有兩個命令需要進行區分:
注意:只有pop和push才分左右,其他的l都是list的意思
總結:
總結set集合一般用於元素的不重復的場景,比如抽獎系統,輪播等場景下
在使用hash集合的時候,要注意,hash其實就是一個Map集合,key-map的時候,值是一個map集合的形式進行存儲的,也和Java中的hashmap有一個類似。
HVALS獲取所有的value,HKEYS獲取所有的key,HGETALL獲取所有的鍵值
總結:
hash可以用於存儲變更的數據,比如user,name,age等,尤其是用戶信息之類的,hash更加適合用於對象的存儲,string更加適合用於字元串的存儲。
在set集合的基礎上增加一個序列號,來進行排序
ZRANGEBYSCORE使用語法
總結
以上是在對五種數據類型進行存取時的一些常用命令操作。關於其他的命令使用,小夥伴們在用到的時候可以直接入官網查看就可以了。
㈣ python怎樣清除redis緩存
想要查看一個db下有多少key,在Redis-cli中輸入 keys * 即可
如果想刪除某個key 可以使用del 命令 例如: del key delkey(你要刪除的key的名稱)
那麼Python如何來查看呢?
[cpp] view plain
# coding=utf-8
'''
Created on 2015-9-8
@author: kwsy
'''
import redis
pool=redis.ConnectionPool(host='192.168.1.126',port=6379,db=0)
r = redis.StrictRedis(connection_pool=pool)
keys = r.keys()
print type(keys)
print keys
keys的type是 list ,所有的key將存入這個list作為結果返回
如果想返回特定形式的key,可以在keys()函數中添加參數,例如keys = r.keys("finger*") 那麼將只返回以finger開頭的key
key的刪除也非常簡單
[cpp] view plain
# coding=utf-8
'''
Created on 2015-9-8
@author: kwsy
'''
import redis
pool=redis.ConnectionPool(host='192.168.1.126',port=6379,db=0)
r = redis.StrictRedis(connection_pool=pool)
r.delete("del1","del2")
我這里是同時刪掉兩個key