菜鸟教程:https://www.runoob.com/redis/redis-sets.html
redis
redis部署
这块的内容可以查看Linux部署部分的知识
redis的使用
引用依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.3</version>
</dependency>
配置文件
redis.single.host=192.168.1.104
redis.single.port=6379
配置redis连接池
@Slf4j
@Configuration
@PropertySource("classpath:application.properties")
public class SingleConfig {
@Value("${redis.single.host}")
private String host;
@Value("${redis.single.port}")
private Integer port;
@Bean
public JedisPool setSingleRedisPool(){
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(10);
jedisPoolConfig.setMaxWaitMillis(1500L);
// 连接耗尽时是否阻塞, false报异常,true阻塞直到超时, 默认true
jedisPoolConfig.setBlockWhenExhausted(false);
// 是否启用pool的jmx管理功能, 默认true
jedisPoolConfig.setJmxEnabled(true);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, 3000);
log.info("host:{}",host);
return jedisPool;
}
}
redis的使用
@Autowired
private JedisPool jedisPool;
@Test
void contextLoads() {
String set = jedisPool.getResource().set("key", "value", SetParams.setParams().ex(12345L));
String value = jedisPool.getResource().getEx("key", GetExParams.getExParams());
System.out.println(value);
String v2 = jedisPool.getResource().getEx("key", GetExParams.getExParams().ex(20L));
System.out.println(v2);
Long t = jedisPool.getResource().ttl("key");
System.out.println(t);
}
redis的基础数据类型
这块的内容为什么要做记录呢?主要是因为redis中不断增加的一些很有意思的特性,而这些特性能够满足我们日常中业务的需求,不需要额外设计方案去处理这样的需求。另外,redis中的一些特性也能很好帮助解决一些问题,比如bpop阻塞,biteMap过滤,srandmember从set中随机获取元素。这些知识可以不经常用,但一定要知道,这就是见识。
通过整理redis的方法时候,感触最多的就是存在非常多的组合方法,以前常见的有set方法里设置有效期,实际上还有非常多这样的组合被封装在一个方法中,这就是一种高级用法,能够提高性能并且应对并发的问题。