另一篇:
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...