jedis实现操纵redis的常用api及使用场景
简单记录一下,和描述一下常用的业务场景。好记性不如烂笔头。
pom.xml
<!--整合redis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
场景1:浏览排行榜场景,比如说一个房屋列表,每次点进去详情,就会浏览数加1,而且,我们只取前10位,而且我们是按照点赞的数量来排序的。是不是有点小复杂?不用担心,redis两个命令就搞定。屌的一逼。
首先了解一下,zset这个集合的特性。有序列表 类似<Key,List<Map<key,value>>> 的类型 和hash差不多 但是,需要注意的是,他的值是很有讲究的,即是说他是有序的,肯定有个排序规则,所以,你要往里面放值,必须是
zadd zset 100 a 200 b 300 c key是zset 100 a 200 b 300 c 相当于list里面一个一个对象 100相当于分数,必须是int类型 a 是我们实际的值 也就是说 我们想插入值的时候,必须是按照这种 我这里是一口气插入三个值 key相同
java 的api 实现 看注释
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();
} }
jedis实现操纵redis的常用api及使用场景的更多相关文章
- Redis数据类型的常用API以及使用场景
一.通用命令 1.keys 遍历出所有的key 一般不在生产环境使用 2.dbsize key的总数 3.exists key 4.del key 删除指定key-value 5.expire k ...
- Unity学习笔记(3):一些常用API和应用场景
Mathf.Lerp(float a,float b,float t)插值函数,当a < b时往a中插入t,以此来实现颜色,声音等渐变效果. GameObject.FindWithTag(str ...
- jedis常用API
一.Redis Client介绍 1.1.简介 Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用. Jedis源码工程地址:https://g ...
- Jedis 常用API使用
使用Jedis操作Redis常用的API <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <depen ...
- Jedis对Redis的常用命令操作
本篇主要总结一些Jedis对Redis的常用命令操作: 1.对key操作命令 2.对String操作命令 3.对List操作命令 4.对Set操作命令 5.对Hash操作命令 6.排序操作指令 一.项 ...
- Redis数据结构和常用API
Redis是一个速度非常快的非关系型数据库,可以存储键与5中不同数据结构类型之间的映射.这5种数据结构分别是STRING(字符串).LIST(列表).SET(集合).HASH(散列).ZSET(有序集 ...
- Redis的常用JavaAPI(Jedis)实现
一. pom依赖: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> & ...
- 12.Java连接Redis_Jedis_常用API
上一篇总结我们使用我们本地的Eclipse中创建的jedis工程,链接到了我们处于VMware虚拟机上的Linux系统上的Redis服务,我们接下来讲一下jedis的一些常用的API. (1)jedi ...
- Jedis/JedisPool和Redis数据类型与特性
1.介绍Jedis Jedis 是 Redis 的 java 版本客户端,使用Jedis可以连接 Redis的数据库,Jedis连接方式有三种Jedis/JedisPool 连接.ShardedJed ...
随机推荐
- Java 类的加载
package com.cwcec.p2; class C { public static final int SIZE; static { SIZE = 100; System.out.printl ...
- 开源通用爬虫框架YayCrawler-页面的抽取规则定义
本节我将向大家介绍一下YayCrawler的核心-页面的抽取规则定义,这也是YayCrawler能够做到通用的主要原因之一.如果我要爬去不同的网站的数据,尽管他们的网站采用的开发技术不同.页面的结构不 ...
- 为什么要用Thrift
Why Thrift, Why not HTTP RPC(JSON+gzip) https://stackoverflow.com/questions/9732381/why-thrift-why-n ...
- yarn工具的使用
<!-- yarn init === npm init --> <!-- yarn login === npm adduser -->登录 <!-- yarn publi ...
- flask客户端测试使用设置cookie参数
今天在对flask客户端进行测试,然后看到我们服务器端用请求前钩子写了这样的代码 @app.before_requestdef before_request(): session = request. ...
- BZOJ3524[Poi2014]Couriers——主席树
题目描述 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. 输入 第一行 ...
- BZOJ1093 ZJOI2007最大半连通子图(缩点+dp)
发现所谓半连通子图就是缩点后的一条链之后就是个模板题了.注意缩点后的重边.写了1h+真是没什么救了. #include<iostream> #include<cstdio> # ...
- Hadoop 入门
我看过的比较全的文章.赞一下 原文链接:http://www.aboutyun.com/thread-8329-1-1.html 问题导读: 1.hadoop编程需要哪些基础?2.hadoop编程需要 ...
- Spring AOP动态代理原理与实现方式
AOP:面向切面.面向方面.面向接口是一种横切技术横切技术运用:1.事务管理: (1)数据库事务:(2)编程事务(3)声明事物:Spring AOP-->声明事物 2.日志处理:3.安全验证 ...
- LightOJ - 1356 Prime Independence (二分图 最大独立集 素数打表)
题意: 给你一个集合,让你从这个集合中挑选出几个数,使得这几个数中任意两个数相除后的值不能为素数 即挑选出来的这几个数不能互相冲突 最大独立集 = 所有点数 - 最大匹配数 呵..呵...原先用的二维 ...