jedis實現操縱redis的經常使用api及使用場景

簡單記錄一下,和描述一下經常使用的業務場景。好記性不如爛筆頭。java

pom.xmlredis

<!--整合redis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
View Code

場景1:瀏覽排行榜場景,好比說一個房屋列表,每次點進去詳情,就會瀏覽數加1,並且,咱們只取前10位,並且咱們是按照點讚的數量來排序的。是否是有點小複雜?不用擔憂,redis兩個命令就搞定。屌的一逼。api

首先了解一下,zset這個集合的特性。有序列表 相似<Key,List<Map<key,value>>>  的類型  和hash差很少 可是,須要注意的是,他的值是頗有講究的,便是說他是有序的,確定有個排序規則,因此,你要往裏面放值,必須是   ide

zadd zset  100 a  200 b  300 c key是zset 100 a  200 b  300 c 至關於list裏面一個一個對象 100至關於分數,必須是int類型 a 是咱們實際的值 也就是說 咱們想插入值的時候,必須是按照這種 我這裏是一口氣插入三個值 key相同

java 的api 實現  看註釋 spa

 private static final String HOT_HOUSE_KEY = "hot_house"; //點讚的key

//
增長點讚的方法 public void increase(Long id) { try { Jedis jedis = new Jedis("127.0.0.1"); jedis.zincrby(HOT_HOUSE_KEY, 1.0D, id + ""); //每次爲 值 id + "" 加1 // 0表明第一個元素,-1表明最後一個元素,保留熱度由低到高末尾10個房產,由於zset是排序的, // 因此說默認的是從低到高,咱們要保留前十名,咱們就要把第一和倒數 第11之間的值移除掉 填坑 ~~這個是個錯誤,由於若是這樣的話,那就永遠只有10條了。錯誤邏輯
       // 最主要是記住api的用法 這裏就註釋了~
// jedis.zremrangeByRank(HOT_HOUSE_KEY, 0, -11); jedis.close(); } catch (Exception e) { log.error(e.getMessage(),e); } } //獲得點贊數的全部排行榜列表 從高到低排列 public List<Long> getHot() { try { Jedis jedis = new Jedis("127.0.0.1"); //由於是默認排序從低到高,因此咱們要反過來取,指定區間內的成員。其中成員的位置按分數值遞減(從大到小)來排列 Set<String> idSet = jedis.zrevrange(HOT_HOUSE_KEY, 0, -1); jedis.close(); List<Long> ids = idSet.stream().map(Long::parseLong).collect(Collectors.toList()); return ids; } catch (Exception e) { log.error(e.getMessage(), e); return Lists.newArrayList(); } }
相關文章
相關標籤/搜索