高級測試都要懂的 redis 數據庫操作

Redis 是一個遠程內存數據庫,主要用來提高軟件的讀寫性能。Redis 主要用來做處理緩存,但是他的作用遠不止于此。

● 緩存數據
這是 Redis 最常被記住的一個應用場景,因為 Redis 數據是存在內存當中,效率非常高。Memcache 也可以用來做緩存數據庫,不過 Redis 因為豐富的數據類型,有些操作會比 Memcache 方便很多。
●?計數器,比如用戶訪問了多少次,點贊數統(tǒng)計
服務或者軟件產品通常需要對用戶行為進行跟蹤和統(tǒng)計,便于后期進行數據統(tǒng)計和分析。想用戶點擊,轉發(fā),點贊等行為通常會被記錄下來。Redis 可以利用原子性的自增操作,輕松記錄這行高頻寫入行為。
●?限速器,比如限制 IP 的訪問頻率有
時候為了緩解服務器壓力,會對一些不必要的或者瘋狂的用戶行為進行限制。比如爬蟲和限購的搶購活動。
●?任務隊列(task queue)
我們在使用各種軟件的時候經常會收到服務器推動給我們的消息,比如到貨通知,內容更新等。這些消息通常是由服務端推送的。Redis 的 pub/sub 能夠支持任務隊列,但是并不能保證每條消息都能完成,如果需要更穩(wěn)定精確的任務隊列,可以使用 rabbitmq 等。
●?排行榜
Redis 的有序集合類型非常適合處理榜單和排序
● 好友關系處理
Redis 的集合類型可以處理交集并集,篩選共同好友,共同愛好之類的一些操作。
● 搜索服務

正因為 Redis 的性能如此卓越,很多公司都非常看重 Redis 的使用和優(yōu)化。做性能測試的可能會經常聽過緩存的一些問題,比如緩存雪崩、緩存穿透、緩存擊穿等。
這些都是由于在 Redis 這樣的緩存數據庫 key 設置或者過期時間設置不當造成的問題?,F在,無論是開發(fā)人員,還是測試人員,都應該接觸下 Redis 的使用。

windows 用戶可以在 github 頁面?下載解壓。解壓后可以得到服務端和客戶端的可執(zhí)行文件。

在當前目錄下運行 redis-server.exe 啟動 Redis 服務,如果覺得麻煩可以配置環(huán)境變量。

當服務啟動以后,可以通過 redis-cli.exe 啟動客戶端

如果你是使用編程語言操作 Redis ,可以下載對應語言的包,比如 python 的 Redis 客戶端:


Redis 當中的數據都是通過 key-value 的形式存儲的, key 是在 Redis 數據庫當中的標識,value 表示要存儲的數據。
數據分為以下幾種:
● 字符串
●?列表
●?散列
●?集合
●?有序集合
以下過程使用 python 存儲一個字符串類型的數據,然后讀取出來:


list 的操作函數一般以 l 開頭, 也有個別例外。列表類型主要用于存儲有序數據,比如任務隊列。列表數據的操作有:
● lpush, 左推入
●?rpush, 右推入
●?lrange, 獲取指定范圍的值
●?lindex, 獲取指定索引的單個值
●?lpop, 左彈出
●?rpop, 右彈出


集合的操作函數一般以 s 開頭, 集合數據是沒有順序的,但是不能重復而且可以很靈活的使用交集,并集操作。
集合的基礎操作 :
● sadd, 添加
● smembers, 獲取所有成員, 如果集合包含元素比較多,速度會比較慢。
● sismember, 判斷是否為成員
● srem, 如果元素存在,移除。set remove


hash 和 python 中的字典很像,主要用來存儲多個鍵值對的映射。因為 Redis 本身就是使用鍵值對形式存儲數據,所以 hash 可以理解成是 Redis 的子應用,可以對其中的任何數字值進行自增操作。
● hash 的操作函數一般以 h 開頭,?
● hset('redis_key', key, value, mapping=None)
● hget,
● hgetall
● hdel


有序集合既可以像列表那樣通過索引獲取,也可以像hash通過key獲取。有序集合的key叫成員(member), value叫分值(score)。key不能重復,value必須為浮點數。
sorted set 的操作函數一般以 z 開頭, :
● zadd('redis_key', mapping=None)
●?zrange('redis_key', start_index, end_index, withscores=True)
●?zrangebyscores('redis_key', start_score, end_score, withscores=True)
●?zrem('redis_key', 'zkey')

說明:本文為檸檬班雨澤老師原創(chuàng),轉載需注明出處!