专栏首页BeJavaGodRedis 一二事(2) - 在spring中使用jedis 连接调试单机redis以及集群redis

Redis 一二事(2) - 在spring中使用jedis 连接调试单机redis以及集群redis

Redis真是好,其中的键值用起来真心强大啊有木有,

之前的文章讲过搭建了redis集群

那么咋们该如何调用单机版的redis以及集群版的redis来使用缓存服务呢?

先讲讲单机版的,单机版redis安装非常简单,不多说了,直接使用命令:

[root@nginx bin]# ./redis-server redis.conf

启动就行

在sprig文件中配置如下

这是配置的redis-cli的连接池

然后定义一个接口,这个接口供两个类实现

一个是单机版,一个是集群版

有人会问为啥要2个类实现,因为redis的单机和集群都是不同的实现方法

一般在开发环境会使用单机版来做测试,生产环境直接上集群

#fake cluster
redis.single.client.host=192.168.1.191
redis.single.client.port=6379

在你的资源文件中配好如上信息,供spring调用

说个题外话,资源文件*.properties,在spring的父子容器中不是公用的

也就是说,在service的spring容器中,只能配service层调用

在springMVC容器中只能被springmvc自己调用,因为资源文件不是夸容器的

而spring容器中的对象是可以被springMVC来访问的

但是springMVC的对象以及资源文件绝对不能被spring来访问,

举个栗子:你有见过service访问controller的吗?没有吧,哈哈

咱们先来建一个通用jedis客户端

(有2个小家伙看不懂最后2个方法什么意思,就加了注释,其实规范点来讲,所有的接口方法都要加注释,而实现类就不需要,但是实现类中的私有方法必须加注释,这是规范)

单机版的实现类:

这是集群的:

使用地方,一般都是在service中调用,把需要加缓存的地方都实现接口

取之前查询有没有缓存,有直接返回,没有查数据库,然后再放入缓存

也有企业会这么做,所有的缓存都有一个团队来管理,做一个定时器,每天凌晨固定一个时间点来跑批,把数据放入缓存

这么做也是可以的

我们采取的是第一种

PS:@Autowired 这边是用的类型相同,有人喜欢用@resource,这样的话就得多写一个,区别点

@Autowired
private JedisClient jedisClient;


@Value("${REDIS_CONTENT_KEY}")
private String REDIS_CONTENT_KEY;


@Override
public List<Content> gettList(Long id) {
// TODO 这个地方加缓存和不加缓存,单台或者集群的redis,都要进行压力测试
//添加缓存
//查询数据库之前先查询缓存,如果有直接返回
try {
//从redis中取缓存数据
String json = jedisClient.hget(REDIS_CONTENT_KEY, id + "");
if (!StringUtils.isBlank(json)) {
//把json转换成List
List<Content> list = JsonUtils.jsonToList(json, Content.class);
return list;
}
} catch (Exception e) {
e.printStackTrace();
}


//执行查询
List<?> list = xxxMapper.select(id);
// 返回结果之前,向缓存中添加数据
try {
// 为了规范key可以使用hash
// 定义一个保存内容的key,hash中每个项就是cid
// value是list,需要把list转换成json数据。
jedisClient.hset(REDIS_CONTENT_KEY, id + "", JsonUtils.objectToJson(list));
} catch (Exception e) {
e.printStackTrace();
}
return list;
}

那么service就好了,集群版的也通用

那么集群的配置如何呢?

放开注释

使用资源文件的配置

#real cluster
redis01.real.cluster.client.host=192.168.1.193
redis01.real.cluster.client.port=7001
redis02.real.cluster.client.host=192.168.1.194
redis02.real.cluster.client.port=7002
redis03.real.cluster.client.host=192.168.1.195
redis03.real.cluster.client.port=7003
redis04.real.cluster.client.host=192.168.1.196
redis04.real.cluster.client.port=7004
redis05.real.cluster.client.host=192.168.1.197
redis05.real.cluster.client.port=7005
redis06.real.cluster.client.host=192.168.1.198
redis06.real.cluster.client.port=7006

好了,启动一下就可以运行了

配置好Test或者controller都可以调用

但是要做好缓存同步,也就是在增加,修改,删除数据后,要同步缓存,把原有的del,在放入新的

这样就可以了`~

本文分享自微信公众号 - BeJavaGod(wxleechenxiang),作者:风间影月

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-04-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • redis 一二事 - 搭建集群缓存服务器

    在如今并发的环境下,对大数据量的查询采用缓存是最好不过的了,本文使用redis搭建集群 (个人喜欢redis,对memcache不感冒) redis是3.0后增...

    风间影月
  • 如何限制用户在某一时间段多次访问接口

    要知道,如今很多平台的接口都是可以同时被门户网站,手机端,移动浏览器访问,因为接口是通用的,而为了安全起见,有些接口都会设置一个门槛,那就是限制访问次数,也就是...

    风间影月
  • 基于Spring 4.0 的 Web Socket 聊天室/游戏服务端简单架构

    在现在很多业务场景(比如聊天室),又或者是手机端的一些online游戏,都需要做到实时通信,那怎么来进行双向通信呢,总不见得用曾经很破旧的ajax每隔10秒或者...

    风间影月
  • 18.3.17日报

    5,修复cookie路径问题。COOKIEJAR这个curl宏的意思是存cookie。如果先调用这玩意,会导致cookie.data被清空

    龙泉寺扫地僧
  • LVM-HOWTO/学习笔记(四)

    We can now create a mount-point and mount the volume

    力哥聊运维与云计算
  • 薪太软荣膺“第六届广东省卓越人力资源服务项目创新奖”|腾讯SaaS加速器·学员动态

    ? 来源 |  腾讯SaaS加速器首期项目-薪太软 ---- 近日,广东省人力资源研究会公示“第六届卓越人力资源管理实践创新奖、卓越人力资源服务项目创新奖”获...

    腾讯SaaS加速器
  • 【分类战车SVM】附录:用Python做SVM模型

    本集目录为: 一、简化版SMO算法 二、LIBSVM包 1.简介 2.数据格式 3.安装 4.简单的使用方法 三、题外话 上一集介绍了SMO的算...

    数说君
  • 【HTB系列】靶机Frolic的渗透测试详解

    Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台。它能帮助你提升渗透测试技能和黑盒测试技能,它包含了一些不断更新的挑战,其中有模拟真实世界场景...

    徐焱
  • 一日一技:如何更好地理解归并排序?

    在昨天的文章里面,我们已经知道,可以使用 heapq.merge把两个有序列表合并成新的有序列表。

    青南
  • ComplexHeatmap做heatmap

    输入的数据为表达矩阵,这里选用seurat数据,所以用GetAssayData取出标准化后的表达矩阵。

    生信编程日常

扫码关注云+社区

领取腾讯云代金券