Redis使用總結

2021-09-02 13:44:11 字數 1866 閱讀 8749

在專案開發過程中,筆主使用redis也有一段時間了。在一些特性的場景,redis能幫助我們解決一些問題。因此,總結一下分享給大家。

1.使用redis實現分布式鎖

/**

* redis訪問工具類

*/@component

public class redisdao

}

@component

public class redisdao catch (exception e) ", e);

} return flag;

}}

2.分布式場景下使用redis生成有序遞增序列

筆主在開發過程中有個需求,要求主鍵的格式為「***+有序遞增的數字」,***是乙個特定的字串常量。這時,借助mysql的主鍵自增功能顯然不能滿足需求。這時,可以借助long increment(k key, long delta)生成有序遞增的數字,然後拼接出主鍵。

@component

public class redisdao

}

3.使用 bitmap 實現使用者上線次數統計

4.使用redis的list結構實現分布式佇列

5.使用redis的set結構實現集合間的並集、交集、差集

例如:兩個不同的使用者共同關注了哪些主播

6.使用redis的zset結構實現排行榜統計

例如:某個主播的粉絲貢獻排行榜,假設主播id為001,這裡定義該主播的粉絲貢獻排行榜的key為fans_contribution_rank_001。

/**

* redis訪問工具類

*/ @component

public class redisdao

/*** 返回按照分數從高到低排序的zset集合

* @param key 鍵

* @return

*/public set> reverserangebyscorewithscores (string key)

}

新增打賞記錄和查詢的測試**如下:

@runwith(springrunner.class)

@springboottest

@autowired

private testservice testservice;

@autowired

private redisdao redisdao;

@test

public void contextloads() , score:{}", arg.getvalue(), arg.getscore());

} }}

測試結果如下:

2018-12-03 17:29:31.841 - values:100005 , score:360.0

2018-12-03 17:29:31.842 - values:100007 , score:270.0

2018-12-03 17:29:31.842 - values:100004 , score:210.0

2018-12-03 17:29:31.842 - values:100006 , score:180.0

2018-12-03 17:29:31.842 - values:100001 , score:100.0

2018-12-03 17:29:31.842 - values:100003 , score:50.0

2018-12-03 17:29:31.842 - values:100002 , score:20.0

Redis使用總結

1 常用記憶體優化手段與引數 通過我們上面的一些實現上的分析可以看出redis實際上的記憶體管理成本非常高,即占用了過多的記憶體,作者對這點也非常清楚,所以提供了一系列的引數和手段來控制和節省記憶體,我們分別來討論下。首先最重要的一點是不要開啟redis的vm選項,即虛擬記憶體功能,這個本來是作為r...

redis使用優化總結學習

在redis的使用中,因為其是單程序在執行,所有在實際使用的過程中因為實際情況可能經常需要進行優化。所以,蒐集了資料學習總結下。1,redis中主要的儲存方式key value模型的儲存方式,在其內部提供了多種的資料型別,可根據實際的情況使用對用的結構型別。目前發現在實際情況,基本上都是用的hash...

Redis使用總結 (序列三)

概述 1 為什麼使用redis 2 使用redis有什麼缺點 3 單執行緒的redis為什麼這麼快 4 redis的資料型別,以及每種資料型別的使用場景 5 redis的過期策略以及記憶體淘汰機制 6 redis和資料庫雙寫一致性問題 7 如何應對快取穿透和快取雪崩問題 8 如何解決redis的併發...