Board logo

标题: Redis使用建议规范(1) [打印本页]

作者: look_w    时间: 2019-2-19 17:17     标题: Redis使用建议规范(1)

合理选择Redis部署模式

查看推荐配置
冷热数据分离,不要将所有数据全部都放到Redis中

建议根据业务只将高频热数据存储到Redis中【QPS大于5000】,对于低频冷数据可以使用Mysql/ElasticSearch等基于磁盘的存储方式,不仅节省内存成本,而且数据量小在操作时速度更快、效率更高!
不同的业务数据要分开存储

Redis默认是提供了32个DataBase来使用,以自然数来做区分,如果不选择DataBase,都会默认使用0这个库

推荐一个部门一个DataBase,然后再做NameSpace的隔离,该操作需要有SDK的支持,一个DataBase可以设置多个NameSpace,这样可以便于管理且方便清理

    <bean id="jedisConnFactory"
            class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
            <property name="hostName" value="${redis.host}" />
            <property name="port" value="${redis.port}" />
            <property name="database" value="${redis.default.db}" />
            <property name="password" value="${redis.pass}" />
            <property name="timeout" value="${redis.timeout}" />
            <property name="poolConfig" ref="jedisPoolConfig" />
        </bean>

规范Key的格式

合适的key,便于查看,统计,排错。
比如:
平台名     平台缩写
网管     GW

“平台缩写“+“-”+“项目名”+“-”+“业务含义”
例如:GW-TRADE-USERID
GW是新网关,TRADE是交易项目,USERID为业务ID。
存储的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 DataAccessException {
                    connection.set(key, value);
                    if (liveTime > 0) {
                        connection.expire(key, liveTime);
                    }
                    return Boolean.TRUE;
                }
            });
        }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0