Redis的坑
Redis文档中介绍存入或查询可以使Object类型,但是实际中用的是String类型
POM依赖
<!-- Radis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.properties
# Redis
spring.redis.host=@spring.redis.host@
spring.redis.password=@spring.redis.password@
spring.redis.port=${port:6379}
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=1
# 连接超时时间(毫秒)
spring.redis.timeout=300
注入对象
@Resource
StringRedisTemplate stringRedisTemplate;
Redis Value
@Test
public void valueAddResitTest(){
stringRedisTemplate.opsForValue().set("key","value");
}
@Test
public void valueGetResitTest(){
String value = stringRedisTemplate.opsForValue().get("key");
logger.info("value:{}", value);
}
@Test
public void valueDelResitTest(){
stringRedisTemplate.delete("key");
}
@Test
public void valueTimeoutResitTest(){
stringRedisTemplate.opsForValue().set("timeStep", new Date().getTime()+"", 2 ,TimeUnit.MINUTES);
}
Redis List
// list数据类型适合于消息队列的场景:比如12306并发量太高,而同一时间段内只能处理指定数量的数据!必须满足先进先出的原则,其余数据处于等待
@Test
public void listPushResitTest(){
// leftPush依次由右边添加
stringRedisTemplate.opsForList().rightPush("myList","1");
stringRedisTemplate.opsForList().rightPush("myList","2");
stringRedisTemplate.opsForList().rightPush("myList", "A");
stringRedisTemplate.opsForList().rightPush("myList", "B");
// leftPush依次由左边添加
stringRedisTemplate.opsForList().leftPush("myList", "0");
}
@Test
public void listGetListResitTest(){
// 查询类别所有元素
List<String> listAll = stringRedisTemplate.opsForList().range( "myList", 0, -1);
logger.info("list all {}", listAll);
// 查询前3个元素
List<String> list = stringRedisTemplate.opsForList().range( "myList", 0, 3);
logger.info("list limit {}", list);
}
@Test
public void listRemoveOneResitTest(){
// 删除先进入的B元素
stringRedisTemplate.opsForList().remove("myList",1, "B");
}
@Test
public void listRemoveAllResitTest(){
// 删除所有A元素
stringRedisTemplate.opsForList().remove("myList",0, "A");
}
Redis Hash
@Test
public void hashPutResitTest(){
// map的key值相同,后添加的覆盖原有的
stringRedisTemplate.opsForHash().put("banks:12600000", "a", "b");
}
@Test
public void hashGetEntiresResitTest(){
// 获取map对象
Map<Object, Object> map = stringRedisTemplate.opsForHash().entries("banks:12600000");
logger.info("objects:{}", map);
}
@Test
public void hashGeDeleteResitTest(){
// 根据map的key删除这个元素
stringRedisTemplate.opsForHash().delete("banks:12600000", "c");
}
@Test
public void hashGetKeysResitTest(){
// 获得map的key集合
Set<Object> objects = stringRedisTemplate.opsForHash().keys("banks:12600000");
logger.info("objects:{}", objects);
}
@Test
public void hashGetValueListResitTest(){
// 获得map的value列表
List<Object> objects = stringRedisTemplate.opsForHash().values("banks:12600000");
logger.info("objects:{}", objects);
}
@Test
public void hashSize() {
// 获取map对象大小
long size = stringRedisTemplate.opsForHash().size("banks:12600000");
logger.info("size:{}", size);
}