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 ...
随机推荐
- 剑指offer:变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路 首先想到的解决方案是根据普通跳台阶题目改编,因为可以跳任意级,所以要 ...
- Issue: business key in a call activiti
https://community.alfresco.com/thread/221280-business-key-in-a-call-activity 这个帖子有一些讨论和回复. https://c ...
- C语言ODBC数据库操作
今天我们来介绍一下C语言操作数据库的方法,这里我们使用的是ODBC方式.环境是WIN7+VC6.其他环境也差不多,具体情况具体分析. 首先是环境的配置以及数据源的添加.这里就不去解释了,相关资料网上有 ...
- win8和win7下解决php5.3和5.4、5.5等不能加载php_curl.dll的终极解决办法 收藏
win8和win7下解决php5.3和5.4.5.5等不能加载php_curl.dll的终极解决办法 收藏2015年01月11日 最近分别在WIN7和Windows8 上分别安装php 高版本!都遇到 ...
- [CNBETA]Intel CPU底层漏洞事件完全详解:全球手机/电脑无一幸免[转帖]
http://www.cnbeta.com/articles/tech/685897.htm 由Intel CPU漏洞问题衍生出来的安全事件已经波及全球几乎所有的手机.电脑.云计算产品,ARM确认 C ...
- IntersectionObserver简介
写在前面 在移动端,有个很重要的概念,叫做懒加载,适用于一些图片资源特别多,ajax数据特别多的页面中,经常会有动态加载数据的场景中,这个时候,我们通常是使用监听scroll或者使用setInterv ...
- scipy优化器optimizer
#optimazer优化器 from scipy.optimize import minimize def rosem(x): return sum(100.0*(x[1:]-x[:-1])**2.0 ...
- python之字典操作
字典操作代码如下: #数据字典操作汇总 person = {'name': 'Mike', 'age': 25} print("初始的数据字典:", person) #访问字典值 ...
- jquery为表格行添加上下移动画效果
为项目列表项添加上下移动动画.首先想使用jquery animate来做到这一点.但我用的是table和tr作为列表和列表项,但jquery动画方法不支持table里的tr(Animations ar ...
- 工作流管库的bpmn部署在数据库中
工作流管库的bpmn部署在数据库中 DB_schema_update_false 没有表则创建 有表则报错 DB_SCHEMA_UPDATE_TRUE 没有表则创建 有表则不创建 脚本更新则更新数据 ...