Redis 开发常用规范
[](()3.规范 Key 的格式
合适的 key,便于查看,统计,排错。 比如:
| 网关 | GW |
| :-- | :-- |
| 平台名 | 平台缩写 |
“平台缩写“+“:”+“项目名”+“:”+“业务含义” 例如:GW:TRADE:USERID GW 是新网关,TRADE 是交易项目,USERID 为业务 ID。
“:”-作为 key 分隔符,方便客户端工具作为目录分级
[](()4.存储的 Key 一定要设置超时时间
如果应用将 Redis 定位为缓存 Cache 使用,对于存放的 Key 一定要设置超时时间!因为若不设置,这些 Key 会一直占用内存不释放,造成极大的浪费,而且随着时间的推移会导致内存占用越来越大,直到达到服务器内存上限!另外 Key 的超时长短要根据业务综合评估,而不是越长越好!(某些业务要求 key 长期有效。可以在每次写入时,都设置超时时间,让超时时间顺延。)
public Boolean set(final byte[] key, final byte[] value, final long liveTime) {
return redisTemplate.execute(new RedisCallback<Boolean>() {
public Boolean doInRedis(RedisConnection connection) throws DataAccessExcept Java 开源项目【ali1024.coding.net/public/P7/Java/git】 ion {
connection.set(key, value);
if (liveTime > 0) {
connection.expire(key, liveTime);
}
return Boolean.TRUE;
}
});
}
[](()5.对于必须要存储的大文本数据一定要压缩后存储
对于大文本【超过 500 字节】写入到 Redis 时,一定要压缩后存储!大文本数据存入 Redis,除了带来极大的内存占用外,在访问量高时,很容易就会将网卡流量占满,进而造成整个服务器上的所有服务不可用,并引发雪崩效应,造成各个系统瘫痪!
public Boolean setBigValue(final byte[] key, final byte[] value, final long liveTime){
return redisTemplate.execute(new RedisCallback<Boolean>() {
public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
byte[] compressedBytes = CompressUtil.compress(value);
connection.set(key, compressedBytes);
if (liveTime > 0) {
connection.expire(key, liveTime);
}
return Boolean.TRUE;
}
});
}
压缩可参考:
public class CompressUtil {
private static final Inflater infl = new Inflater();
pri 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 vate static final Deflater defl = new Deflater();
private CompressUtil(){
}
public static byte[] uncompress(byte[] inputByte) throws IOException {
int len = 0;
infl.setInput(inputByte);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] outByte = new byte[1024];
try {
while (!infl.finished()) {
len = infl.inflate(outByte);
if (len == 0) {
break;
}
bos.write(outByte, 0, len);
}
infl.end();
最后:学习总结——MyBtis 知识脑图(纯手绘 xmind 文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份 xmind 文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的 MyBtis 知识脑图,由于是 xmind 文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的 MyBtis 知识脑图原件(包括上方的面试解析 xmind 文档)
除此之外,前文所提及的 Alibaba 珍藏版 mybatis 手写文档以及一本小小的 MyBatis 源码分析文档——《MyBatis 源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
评论