一 Redis的7個應用場景

2022-09-16 21:39:31 字數 1312 閱讀 2388

另一篇:

redis的7個應用場景

一:快取——熱資料

熱點資料(經常會被查詢,但是不經常被修改或者刪除的資料),首選是使用redis快取,畢竟強大到冒泡的qps和極強的穩定性不是所有類似工具都有的,而且相比於memcached還提供了豐富的資料型別可以使用,另外,記憶體中的資料也提供了aof和rdb等持久化機制可以選擇,要冷、熱的還是忽冷忽熱的都可選。

結合具體應用需要注意一下:很多人用spring的aop來構建redis快取的自動生產和清除,過程可能如下:

上面這種操作,如果併發量很小的情況下基本沒問題,但是高併發的情況請注意下面場景:

為了update先刪掉了redis中的該資料,這時候另乙個執行緒執行查詢,發現redis中沒有,瞬間執行了查詢sql,並且插入到redis中一條資料,回到剛才那個update語句,這個悲催的執行緒壓根不知道剛才那個該死的select執行緒犯了乙個彌天大錯!於是這個redis中的錯誤資料就永遠的存在了下去,直到下乙個update或者delete。

二:計數器

諸如統計點選數等應用。由於單執行緒,可以避免併發問題,保證不會出錯,而且100%毫秒級效能!爽。

命令:incrby

當然爽完了,別忘記持久化,畢竟是redis只是存了記憶體!

三:佇列

四:位操作(大資料處理)

原理是:

redis內構建乙個足夠長的陣列,每個陣列元素只能是0和1兩個值,然後這個陣列的下標index用來表示我們上面例子裡面的使用者id(必須是數字哈),那麼很顯然,這個幾億長的大陣列就能通過下標和元素值(0和1)來構建乙個記憶系統,上面我說的幾個場景也就能夠實現。用到的命令是:setbit、getbit、bitcount

五:分布式鎖與單執行緒機制

六:最新列表

例如新聞列表頁面最新的新聞列表,如果總數量很大的情況下,盡量不要使用select a from a limit 10這種low貨,嘗試redis的 lpush命令構建list,乙個個順序都塞進去就可以啦。不過萬一記憶體清掉了咋辦?也簡單,查詢不到儲存key的話,用mysql查詢並且初始化乙個list到redis中就好了。

七:排行榜

誰得分高誰排名往上。命令:zadd(有續集,sorted set)

最近在研究**,發現量化交易是個非常好的辦法,通過臆想出來規律,用程式對歷史資料進行驗證,來判斷這個臆想出來的規律是否有效,這玩意真牛!有沒有哪位玩這個的給我留個言,交流一下唄。

Redis應用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...

Redis應用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...

Redis應用場景

閱讀 31,232 次 毫無疑問,redis 開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。希望你喜歡這個比喻。下面是一篇新鮮出爐的文章,其作者是re...