redis—几个概念
程序员文章站
2022-04-30 09:30:16
...
哨兵
sentinal,是一个分布式系统,对主从结构中的每台服务器进行监控,出现故障时通过投票机制选出新的master,并将所有的slave连接到新的master。
哨兵本身也是一台redis服务器,只是不提供数据服务。哨兵之间能互相通信,交换彼此的监测信息,通常部署奇数台,方便出投票结果。
(监测替换)
集群
将网络中若干台计算机联通起来,统一管理,使其对外实现单机效果。
作用:负载均衡,提高容灾性,分散单台服务器的存储压力。
缓存预热
系统启动前,提前将相关数据加载到缓存中,避免用户请求先直接查询数据库再将数据库数据放入缓存。
缓存雪崩
在很短的时间内大量的key过期,导致大量请求直接连接数据库,导致数据库压力过大崩溃。
应避免大量key集中过期。
缓存击穿
单个高热数据过期瞬间,大量的访问对数据库造成压力,导致数据库压力过大崩溃。
适当延长过期时间。
缓存穿透
访问了不存在的key,绕过redis缓存直接访问数据库,导致服务器压力过大崩溃。
数据加密、监控、黑白名单。
程序中使用redis
创建redis连接
普通连接方式
Jedis j = new Jedis("101.23.99.08", 8888);
j.hsetnx("hash1", "date", "2020-08-08");
String date = j.hget("hash1", "date");
System.out.println(date);
使用redis连接池
public class JedisUtils {
private static JedisPool jp = null;;
private static String host ;
private static int port;
private static int maxTotal;
private static int maxIdle;
static {
ResourceBundle resource = ResourceBundle.getBundle("redis");
host = resource.getString("redis.host");
port = Integer.valueOf(resource.getString("redis.port"));
maxTotal = Integer.valueOf(resource.getString("redis.maxTotal"));
maxIdle = Integer.valueOf(resource.getString("redis.maxIdle"));
JedisPoolConfig jpc = new JedisPoolConfig();
jpc.setMaxTotal(maxTotal);
jpc.setMaxIdle(maxIdle);
jp = new JedisPool(jpc, host, port);
}
public static Jedis getJedis(){
return jp.getResource();
}
}
获取redis连接
Jedis jedis = JedisUtils.getJedis();
jedis.set("test","ok");
System.out.println(jedis.get("test"));
jedis.close();
客户端验证
下一篇: 垃圾回收中的几个概念(未完,待补充)