人生三大境界
衣带渐宽终不悔,为伊消得人憔悴。
昨夜西风凋碧树,独上高楼,望尽天涯路。
众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

Redis的Jedis操作(五)

需要把jedis依赖的jar包添加到工程中。Maven工程中需要把jedis的坐标添加到依赖。

推荐添加到服务层。

1.连接单机版

第一步:创建一个Jedis对象。需要指定服务端的ip及端口。

第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。

第三步:打印结果。

第四步:关闭Jedis

@Test

     public void testJedis() throws Exception {

          // 第一步:创建一个Jedis对象。需要指定服务端的ip及端口。

          Jedis jedis = new Jedis("192.168.25.153", 6379);

          // 第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。

          String result = jedis.get("hello");

          // 第三步:打印结果。

          System.out.println(result);

          // 第四步:关闭Jedis

          jedis.close();

     }

 

2.连接单机版使用连接池

第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。

第二步:从JedisPool中获得Jedis对象。

第三步:使用Jedis操作redis服务器。

第四步:操作完毕后关闭jedis对象,连接池回收资源。

第五步:关闭JedisPool对象。

@Test

     public void testJedisPool() throws Exception {

          // 第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。

          JedisPool jedisPool = new JedisPool("192.168.25.153", 6379);

          // 第二步:从JedisPool中获得Jedis对象。

          Jedis jedis = jedisPool.getResource();

          // 第三步:使用Jedis操作redis服务器。

          jedis.set("jedis", "test");

          String result = jedis.get("jedis");

          System.out.println(result);

          // 第四步:操作完毕后关闭jedis对象,连接池回收资源。

          jedis.close();

          // 第五步:关闭JedisPool对象。

          jedisPool.close();

     }

 

3.连接集群版

第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。

第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。

第三步:打印结果

第四步:系统关闭前,关闭JedisCluster对象。

 

@Test

     public void testJedisCluster() throws Exception {

          // 第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。

          Set<HostAndPort> nodes = new HashSet<>();

          nodes.add(new HostAndPort("localhost", 7001));

          nodes.add(new HostAndPort("localhost", 7002));

          nodes.add(new HostAndPort("localhost", 7003));

          nodes.add(new HostAndPort("localhost", 7004));

          nodes.add(new HostAndPort("localhost", 7005));

          nodes.add(new HostAndPort("localhost", 7006));

          JedisCluster jedisCluster = new JedisCluster(nodes);

          // 第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。

          jedisCluster.set("hello", "100");

          String result = jedisCluster.get("hello");

          // 第三步:打印结果

          System.out.println(result);

          // 第四步:系统关闭前,关闭JedisCluster对象。

          jedisCluster.close();

     }

 

 

在业务代码中使用:

注意:添加缓存不能影响正常业务逻辑。

 

1.代码实现--在接口实现类方法中实现

 

@Autowired

private JedisClient jedisClient

@Value("${CONTENT_KEY}")

private String CONTENT_KEY;

@Override

     public List<TbContent> getContentList(long cid) {

          //查询缓存

          try {

               String json = jedisClient.hget(CONTENT_KEY, cid + "");

               //判断json是否为空

               if (StringUtils.isNotBlank(json)) {

                    //json转换成list

                    List<TbContent> list = JsonUtils.jsonToList(json, TbContent.class);

                    return list;

               }

          } catch (Exception e) {

               e.printStackTrace();

          }

          //根据cid查询内容列表

          TbContentExample example = new TbContentExample();

          //设置查询条件

          Criteria criteria = example.createCriteria();

          criteria.andCategoryIdEqualTo(cid);

          //执行查询

          List<TbContent> list = contentMapper.selectByExample(example);

          //向缓存中添加数据

          try {

               jedisClient.hset(CONTENT_KEY, cid + "", JsonUtils.objectToJson(list));

          } catch (Exception e) {

               e.printStackTrace();

          }

          return list;

     }

 

2.缓存同步

对内容信息做增删改操作后只需要把对应缓存删除即可。

可以根据cid删除。

@Override

     public E3Result addContent(TbContent content) {

          //补全属性

          content.setCreated(new Date());

          content.setUpdated(new Date());

          //插入数据

          contentMapper.insert(content);

          //缓存同步

          jedisClient.hdel(CONTENT_KEY, content.getCategoryId().toString());

         

          return E3Result.ok();

     }

 

posted @ 2019-11-02 14:58  一剑霜寒十九洲  阅读(220)  评论(0编辑  收藏  举报