redis的入门
redis的windows版本的安装:https://github.com/microsoftarchive/redis
注意:别忘了加入环境变量中!!!
1. 命令的学习
redis-cli:访问客户端
select index表示切换数据库,默认使用0
flushdb:刷新一下数据都没有了
1.1 string类型的数据使用的方式
1.2 hash类型的数据使用的方式
1.3 列表类型的数据使用的方式
注意:如果是左进—类似于一个栈
注意:如果是右出—类似于一个队列
1.4 集合类型的数据使用的方式(无序的集合,弹出时是无序的)
1.5 sort有序集合类型的数据使用的方式
1.6 查询数据库中一共有多少的key
1.7增删查对应的key
1.8给对应的key设置“过期的时间”(自动删除对应的key)–用于实现“验证码”+“登陆凭证”的业务
2. redis的事务管理的特点
最好不要在事务执行的过程中,进行数据的查询,最好是在事务前或者事务执行后进行数据的查询
spring中redis事务管理的标准模板
@Test
public void test(){
//这个里面进行redis的事务管理的执行语句
Object execute = redisTemplate.execute(new SessionCallback() {
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
operations.multi();//开启事务
//相应的执行语句
return operations.exec();//提交事务
}
});
//事务执行完毕
}
Spring整合redis
# RedisProperties(选择数据库11,数据库的ip是本机)
spring.redis.database=11
spring.redis.host=localhost
spring.redis.port=6379
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
//使得template具备访问数据的能力
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
// 设置key的序列化方式
template.setKeySerializer(RedisSerializer.string());
// 设置value的序列化方式
template.setValueSerializer(RedisSerializer.json());
// 设置hash的key的序列化方式(hash本身有key和value)
template.setHashKeySerializer(RedisSerializer.string());
// 设置hash的value的序列化方式
template.setHashValueSerializer(RedisSerializer.json());
template.afterPropertiesSet();
return template;
}
}
Redis的业务实现
redis的高级数据类型
HyperLoglog是统计不同的数据(数据类型可以随意)个数—用于统计ip访问量
注意bitmap需要的key的类型是byte数组,统计相同id的对应的真假----用户统计数据库用户访问网站的活跃度
多级缓存优化性能
caffeine本地缓存(可以初始化时,先去mysql数据库查找数据,之后就可以本地缓存查数据)
实际中间的缓存还可以用redis,而且本地缓存的有时间比较短是3分钟