添加redis的起步依賴:
<!-- 配置使用redis啓動器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在application.properties中配置redis的連接信息:
#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=root
#最大連接數
spring.redis.jedis.pool.max-active=30
#最大空閒數
spring.redis.jedis.pool.max-idle=20
#最小空閒連接數
spring.redis.jedis.pool.min-idle=10
#連接時的最大等待毫秒數
spring.redis.jedis.pool.max-wait=3000
注入RedisTemplate測試redis操作
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class RedisTest {
@Autowired
private UserDao userDao;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Test
public void test() throws JsonProcessingException {
// 從redis緩存中獲得指定的數據
String userListData = redisTemplate.boundValueOps("user.findAll").get();
//如果redis中沒有數據的話
if (null == userListData) {
//查詢數據庫獲得數據
List<User> users = userDao.findAll();
//轉換成json格式字符串
ObjectMapper om = new ObjectMapper();
userListData = om.writeValueAsString(users);
//將數據存儲到redis中,下次在查詢直接從redis中獲得數據,不用在查詢數據庫
redisTemplate.boundValueOps("user.findAll").set(userListData);
System.out.println("===============從數據庫獲得數據===============");
} else {
System.out.println("===============從redis緩存中獲得數據===============");
}
System.out.println(userListData);
}
}
Operations:
redisTemplate有兩個方法經常用到,一個是opsForXXX一個是boundXXXOps,XXX是value的類型,前者獲取到一個Opercation,但是沒有指定操作的key,可以在一個連接(事務)內操作多個key以及對應的value;後者會獲取到一個指定了key的operation,在一個連接內只操作這個key對應的value
private RedisTemplate redisTemplate;
ValueOperations valueOperations = redisTemplate.opsForValue();
ValueOperations :簡單字符串類型數據操作
SetOperations :set類型數據操作
ZSetOperations :zset類型數據操作
HashOperations :map類型的數據操作
ListOperations :list類型的數據操作
opsForGeo:geo類型的數據操作,應用於地理位置計算
opsForHyperLogLog:應用於獨立信息統計
opsForCluster:應用於集羣
--------------------------------------------------------------------------------------------------------------------------------------------
BoundValueOperations boundValueOps = redisTemplate.boundValueOps("key");
boundValueOps
boundSetOps
boundZSetOps
boundHashOps
boundListOps
boundGeoOps