1.redis 是一个开源bsd协议使用内存数据结构可以作为数据库,缓存,消息broker 和流引擎,
2. redis 提供了string,hash,lists,set,sorted set 和range queries,bitmaps,hyperlogs,geospatial idexs 和流
3. redis 7以下通过eval ,lua脚本管理数据,redis 7 支持funciton
4.redis的淘汰策略 no evication volatile-ttl volatile-random,volatile-lru allkeys-random,allkeys-lru
5.transaction命令 multi exec discard watch
6.persistence strategy : rdb 和 aof ,开启aof appendOnly=true,rdb 文件的名称默认dump.rdb
7.high availity redis sentinel redis cluster
8.redis pipeline
9. reids 的两种客户端jedis 和 lectutre
RedisStandaloneConfiguration standaloneConfig = new RedisStandaloneConfiguration();
standaloneConfig.setHostName("127.0.0.1");
standaloneConfig.setPort(6379);
RedisTemplate<Object,Object>redisTemplate = new RedisTemplate();
LettuceConnectionFactory factory = new LettuceConnectionFactory(standaloneConfig);
factory.afterPropertiesSet();
redisTemplate.setConnectionFactory(factory);
redisTemplate.afterPropertiesSet();
redisTemplate.opsForList().leftPush("list",1);
System.out.println(redisTemplate.opsForList().rightPop("list"));
redisTemplate.setEnableTransactionSupport(true);
SessionCallback<Object> sessionCallback = new SessionCallback<Object>() {
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
operations.multi();
operations.opsForValue().increment(2);
operations.opsForValue().set("sno",1);
operations.opsForHash().put("stu","sno","10000");
operations.opsForHash().put("stu","sname","zhangsan");
operations.opsForSet().add("set",1);
operations.opsForSet().add("set",2);
//operations.discard();
operations.opsForSet().add("set3",3);
operations.opsForSet().union("set","set3");
operations.opsForList().leftPush("list2",1);
operations.exec();
return null;
}
};
redisTemplate.executePipelined(sessionCallback);
System.out.println(redisTemplate.opsForValue().get("sno"));
System.out.println(redisTemplate.opsForHash().get("stu","sno"));
System.out.println(redisTemplate.opsForSet().pop("set"));
redisTemplate.opsForZSet().add("fruit","10",0.2);
redisTemplate.opsForZSet().add("fruit","12",0.3);
redisTemplate.opsForZSet().add("fruit","13",0.4);
redisTemplate.opsForZSet().add("fruit","14",1.5);
System.out.println(redisTemplate.opsForZSet().count("fruit",0.0,1.0));
System.out.println(redisTemplate.opsForZSet().popMax("fruit"));
10.redis 的基本数据结构的底层优化和线程模型
11.redis 的分布式锁,缓存雪崩,缓存击穿,缓存穿透,双写一致性。