安装
链接:https://pan.baidu.com/s/1mJJxjbQl16P2dP97bFUVqw 提取码:fl3z
下载之后解压
启动redis
1
Redis-x64-3.0.504> .\redis-server.exe .\redis.windows.conf
默认没有密码
基础
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
redis最大链接数默认最大10000
使用
python
redis批量的插入数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
def batch_add(self, batch_size, data):
try:
count = 0
pipeline_redis = self.connect.client().pipeline()
for line in data:
key, value = self.label+str(line[0]), line[1]
pipeline_redis.rpush(key, value.strip())
if not count % batch_size:
pipeline_redis.execute()
count = 0
pipeline_redis.execute()
except Exception:
logger.error('入库redis失败')
获取所有的key:
1
conn.keys()
删除:
1
2
for elem in redis_conn.keys():
redis_conn.delete(elem)
scan:
1
2
1.connection.scan_iter()
2.connection.scan_iter("*")
过期时间
1
r.expire(_key, 2) # 这个键在2秒后就无效了
Java
Redistemplate模板配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Configuration
public class RedisConfig {
@Bean
@SuppressWarnings("SpringJavaAutowiringInspection")
public RedisTemplate<String, Serializable> redisTemplate(LettuceConnectionFactory connectionFactory) {
RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
RedisSerializer keySerializer = new StringRedisSerializer();
RedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer();
redisTemplate.setKeySerializer(keySerializer);
redisTemplate.setValueSerializer(valueSerializer);
redisTemplate.setHashKeySerializer(keySerializer);
redisTemplate.setHashValueSerializer(valueSerializer);
redisTemplate.setConnectionFactory(connectionFactory);
return redisTemplate;}}
设置缓存时间
1
2
3
@Autowired
private RedisTemplate<String, String> redisTemplate;
redisTemplate.opsForValue().set(key, value, 60, TimeUnit.SECONDS);
存在问题
spring-boot自带的redis集成了jedis,会存在连接超时的问题
1
2
1、Lettuce 自适应拓扑刷新(Adaptive updates)与定时拓扑刷新(Periodic updates) 是默认关闭的。
2、项目用了k8s做docker容器化部署,但是k8s有设置空闲连接超时就断开,所以当你从连接池拿到被断开的连接时就会报错。
解决:
1
2
3
4
5
6
# 解决redis 240秒超时问题
lettuce:
cluster:
refresh:
adaptive: true
period: 20