2, 资源文件 application.properties 中对 Redis 进行配置
- ############################################################
- #
- # Redis 配置
- #
- ############################################################
- spring.Redis.database=0
- spring.Redis.host=127.0.0.1
- spring.Redis.port=6379
- spring.Redis.password=
- spring.Redis.jedis.pool.max-active=8
- spring.Redis.jedis.pool.max-wait=-1
- spring.Redis.jedis.pool.max-idle=10
- spring.Redis.jedis.pool.min-idle=2
- spring.Redis.timeout=6000
3, 封装 JSON 工具类
这个工具类比较简单, 封装操作 redisTemplate 的实现类. 这个工具类只是简单的封装了 StringRedisTemplate, 其他相关的数据类型大家可以根据自己的需要自行扩展.
- package com.weiz.utils;
- import java.util.Map;
- import java.util.Set;
- import java.util.concurrent.TimeUnit;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.Redis.core.StringRedisTemplate;
- import org.springframework.stereotype.Component;
- /**
- *
- * @Title: RedisOperator.java
- * @Package com.weiz.util
- * @Description: 使用 redisTemplate 的操作实现类 Copyright: Copyright (c) 2016
- * Company:FURUIBOKE.SCIENCE.AND.TECHNOLOGY
- *
- * @author weiz
- * @date 2017 年 9 月 29 日 下午 2:25:03
- * @version V1.0
- */
- @Component
- public class RedisOperator {
- // @Autowired
- // private RedisTemplate<String, Object> redisTemplate;
- @Autowired
- private StringRedisTemplate redisTemplate;
- // Key(键), 简单的 key-value 操作
- /**
- * 实现命令: TTL key, 以秒为单位, 返回给定 key 的剩余生存时间 (TTL, time to live).
- *
- * @param key
- * @return
- */
- public long ttl(String key) {
- return redisTemplate.getExpire(key);
- }
- /**
- * 实现命令: expire 设置过期时间, 单位秒
- *
- * @param key
- * @return
- */
- public void expire(String key, long timeout) {
- redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
- }
- /**
- * 实现命令: INCR key, 增加 key 一次
- *
- * @param key
- * @return
- */
- public long incr(String key, long delta) {
- return redisTemplate.opsForValue().increment(key, delta);
- }
- /**
- * 实现命令: KEYS pattern, 查找所有符合给定模式 pattern 的 key
- */
- public Set<String> keys(String pattern) {
- return redisTemplate.keys(pattern);
- }
- /**
- * 实现命令: DEL key, 删除一个 key
- *
- * @param key
- */
- public void del(String key) {
- redisTemplate.delete(key);
- }
- // String(字符串)
- /**
- * 实现命令: SET key value, 设置一个 key-value(将字符串值 value 关联到 key)
- *
- * @param key
- * @param value
- */
- public void set(String key, String value) {
- redisTemplate.opsForValue().set(key, value);
- }
- /**
- * 实现命令: SET key value EX seconds, 设置 key-value 和超时时间 (秒)
- *
- * @param key
- * @param value
- * @param timeout
- * (以秒为单位)
- */
- public void set(String key, String value, long timeout) {
- redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
- }
- /**
- * 实现命令: GET key, 返回 key 所关联的字符串值.
- *
- * @param key
- * @return value
- */
- public String get(String key) {
- return (String)redisTemplate.opsForValue().get(key);
- }
- // Hash(哈希表)
- /**
- * 实现命令: HSET key field value, 将哈希表 key 中的域 field 的值设为 value
- *
- * @param key
- * @param field
- * @param value
- */
- public void hset(String key, String field, Object value) {
- redisTemplate.opsForHash().put(key, field, value);
- }
- /**
- * 实现命令: HGET key field, 返回哈希表 key 中给定域 field 的值
- *
- * @param key
- * @param field
- * @return
- */
- public String hget(String key, String field) {
- return (String) redisTemplate.opsForHash().get(key, field);
- }
- /**
- * 实现命令: HDEL key field [field ...], 删除哈希表 key 中的一个或多个指定域, 不存在的域将被忽略.
- *
- * @param key
- * @param fields
- */
- public void hdel(String key, Object... fields) {
- redisTemplate.opsForHash().delete(key, fields);
- }
- /**
- * 实现命令: HGETALL key, 返回哈希表 key 中, 所有的域和值.
- *
- * @param key
- * @return
- */
- public Map<Object, Object> hgetall(String key) {
- return redisTemplate.opsForHash().entries(key);
- }
- // List(列表)
- /**
- * 实现命令: LPUSH key value, 将一个值 value 插入到列表 key 的表头
- *
- * @param key
- * @param value
- * @return 执行 LPUSH 命令后, 列表的长度.
- */
- public long lpush(String key, String value) {
- return redisTemplate.opsForList().leftPush(key, value);
- }
- /**
- * 实现命令: LPOP key, 移除并返回列表 key 的头元素.
- *
- * @param key
- * @return 列表 key 的头元素.
- */
- public String lpop(String key) {
- return (String)redisTemplate.opsForList().leftPop(key);
- }
- /**
- * 实现命令: RPUSH key value, 将一个值 value 插入到列表 key 的表尾 (最右边).
- *
- * @param key
- * @param value
- * @return 执行 LPUSH 命令后, 列表的长度.
- */
- public long rpush(String key, String value) {
- return redisTemplate.opsForList().rightPush(key, value);
- }
- }
4, 创建 RedisController 控制器
- package com.weiz.controller;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.Redis.core.StringRedisTemplate;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.Web.bind.annotation.RestController;
- import com.weiz.utils.JSONResult;
- import com.weiz.pojo.SysUser;
- import com.weiz.pojo.User;
- import com.weiz.utils.JsonUtils;
- import com.weiz.utils.RedisOperator;
- @RestController
- @RequestMapping("redis")
- public class RedisController {
- @Autowired
- private StringRedisTemplate strRedis;
- @Autowired
- private RedisOperator Redis;
- @RequestMapping("/test")
- public JSONResult test() {
- SysUser user = new SysUser();
- user.setId("100111");
- user.setUsername("spring boot");
- user.setPassword("abc123");
- user.setIsDelete(0);
- user.setRegistTime(new Date());
- strRedis.opsForValue().set("json:user", JsonUtils.objectToJson(user));
- return JSONResult.ok(user);
- }
- @RequestMapping("/getJsonList")
- public JSONResult getJsonList() {
- User user = new User();
- user.setAge(18);
- user.setName("慕课网");
- user.setPassword("123456");
- user.setBirthday(new Date());
- User u1 = new User();
- u1.setAge(19);
- u1.setName("spring boot");
- u1.setPassword("123456");
- u1.setBirthday(new Date());
- User u2 = new User();
- u2.setAge(17);
- u2.setName("hello spring boot");
- u2.setPassword("123456");
- u2.setBirthday(new Date());
- List<User> userList = new ArrayList<>();
- userList.add(user);
- userList.add(u1);
- userList.add(u2);
- Redis.set("json:info:userlist", JsonUtils.objectToJson(userList), 2000);
- String userListJson = Redis.get("json:info:userlist");
- List<User> userListBorn = JsonUtils.jsonToList(userListJson, User.class);
- return JSONResult.ok(userListBorn);
- }
- }
说明:
1. /test 是没有封装的, 原生的 Redis 客户端操作 Redis 的方法.
2. /getJsonList 为封装的工具类操作调用方法.
二, 测试
来源: https://www.cnblogs.com/zhangweizhong/p/12498987.html