SpringBoot学习笔记9--springboot整合redis

1.资源文件配置

在pom.xml文件中添加如下配置

<!-- 引入 redis 依赖 -->
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
  </dependency>

在application.properties文件中添加如下配置:

############################################################
# REDIS 相关配置
############################################################
# Redis数据库索引(默认为0)
spring.redis.database=1
# Redis服务器地址
#注意:这里使用本机IP地址192.168.2.1不行,必须是127.0.0.1或者localhost
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis连接密码(默认为空)
spring.redis.password=
#连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=100
#连接池最大阻塞时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
#连接池中的最大空闲连接
spring.redis.pool.max-idle=10
#连接池中的最小空闲连接
spring.redis.pool.min-idle=2
#连接超时时间(毫秒)
spring.redis.timeout=5000

2.安装redis,可参考https://blog.csdn.net/qq_20788055/article/details/80383161

3.创建Controller,注意需要注入StringRedisTemplate,通过该对象的opsForValue()的set方法可以将对象或集合缓存在redis中

4.进入浏览器访问http://localhost:8088/SpringBoot/redis/test

此时查看RedisDesktopManager即可看到如下信息

注意:json:studnet这种写法的好处是可以在RedisDesktopManager软件中根据冒号自动分层(如上图所示)

**************************************************************************************************************************************************************************************************************************

redis缓存集合

注意:redis是RedisOperator对象 ,RedisOperator是基于StringRedisTemplate对象进行封装的工具类,代码如下:

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;
/**
 * 使用redisTemplate的操作实现类
 * @author qiuzhiwen
 *
 */
@Component
public class RedisOperator {
 
 @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);
 }
}
进入浏览器访问http://localhost:8088/SpringBoot/redis/test2即可得到如下信息:

此时查看RedisDesktopManager可以看到studentlist集合已经缓存到redis中了

至此,springboot整合redis已经介绍完毕!




猜你喜欢

转载自blog.csdn.net/qq_20788055/article/details/80463643