Redis相关注意事项

本文介绍了五个使用Redis使用时的注意事项。如果你在使用或者考虑使用Redis,你可以学习一下下面的一些建议,避免遇到以下提到的问题。

一、配置相关注意事项

1、涉及到内存的单位注意添加 b

1k => 1000 bytes   
1kb => 1024 bytes

2、daemonize为 yes 后台运行时,记得配置 pidfile

daemonize yes
pidfie /var/run/redis.pid

3、配置了最大内存 maxmemory 之后记得配置过期删除策略

maxmemory 5gb
maxmemory-policy volatile-lru

## 补充
# volatile-lru -> 根据LRU算法生成的过期时间来删除。
# allkeys-lru -> 根据LRU算法删除任何key。
# volatile-random -> 根据过期设置来随机删除key。
# allkeys->random -> 无差别随机删。
# volatile-ttl -> 根据最近过期时间来删除(辅以TTL)
# noeviction -> 谁也不删,直接在写操作时返回错误。

4、Redis 慢查询,只计算命令运行的实际时间

## 配置慢查询
# 单位是微妙
slowlog-log-slower-than 10000
# 服务器内存最多保存多少条慢查询日志,先进先出的方式覆盖
slowlog-max-len 128

## 查看慢查询
    SLOWLOG GET
## 慢查询清理
    slowlog reset
## slowlog总数
    SLOWLOG LEN
## slowlog get 1, 1 是得到一条 slowlog
       1) (integer) 13     // slowlog唯一编号id
       2) (integer) 1466499110  // 查询的时间戳
       3) (integer) 41349  // 查询的耗时(微妙)
       4) 1) "scan"  // 查询命令,slowlog最多保存前面的31个key和128字符
          2) "0"
          3) "MATCH"
          4) "*"
          5) "COUNT"
          6) "10000"

5、Redis 禁用某些命令

(error) ERR unknown command ‘CONFIG‘

## 上面的错误就是由于配置了如下命令导致的
rename-command config ""

## 也可以将其改名成你自己想改成的名字,别人不能猜到的
rename-command config "lcconfig"

二、使用注意事项

1、使用key值前缀来作命名空间

虽然说Redis支持多个数据库(默认32个,可以配置更多),但是除了默认的0号库以外,其它的都需要通过一个额外请求才能使用。所以用前缀作为命名空间可能会更明智一点。

另外,在使用前缀作为命名空间区隔不同key的时候,最好在程序中使用全局配置来实现,直接在代码里写前缀的做法要严格避免,这样可维护性实在太差了。

2、创建一个类似 ”registry” 的key用于标记key使用情况

为了更好的管理你的key值的使用,比如哪一类key值是属于哪个业务的,你通常会在内部wiki或者什么地方创建一个文档,通过查询这个文档,我们能够知道Redis中的key都是什么作用。

与之结合,一个推荐的做法是,在Redis里面保存一个registry值,这个值的名字可以类似于 __key_registry__ 这样的,这个key对应的value就是你文档的位置,这样我们在使用Redis的时候,就能通过直接查询这个值获取到当前Redis的使用情况了。

3、注意垃圾回收

Redis是一个提供持久化功能的内存数据库,如果你不指定上面值的过期时间,并且也不进行定期的清理工作,那么你的Redis内存占用会越来越大,当有一天它超过了系统可用内存,那么swap上场,离性能陡降的时间就不远了。所以在Redis中保存数据时,一定要预先考虑好数据的生命周期,这有很多方法可以实现。

比如你可以采用Redis自带的过期时间为你的数据设定过期时间。但是自动过期有一个问题,很有可能导致你还有大量内存可用时,就让key过期去释放内存,或者是内存已经不足了key还没有过期。

如果你想更精准的控制你的数据过期,你可以用一个ZSET来维护你的数据更新程度,你可以用时间戳作为score值,每次更新操作时更新一下score,这样你就得到了一个按更新时间排序序列串,你可以轻松地找到最老的数据,并且从最老的数据开始进行删除,一直删除到你的空间足够为止。

4、设计好你的Sharding机制

Redis目前并不支持Sharding,但是当你的数据量超过单机内存时,你不得不考虑Sharding的事(注意:Slave不是用来做Sharding操作的,只是数据的一个备份和读写分离而已)。

所以你可能需要考虑好数据量大了后的分片问题,比如你可以在只有一台机器的时候就在程序上设定一致性hash机制,虽然刚开始所有数据都hash到一台机器,但是当你机器越加越多的时候,你就只需要迁移少量的数据就能完成了。

5、不要有个锤子看哪都是钉子

当你使用Redis构建你的服务的时候,一定要记住,你只是找了一个合适的工具来实现你需要的功能。而不是说你在用Redis构建一个服务,这是很不同的,你把Redis当作你很多工具中的一个,只在合适使用的时候再使用它,在不合适的时候选择其它的方法。

原文地址:https://www.cnblogs.com/value-code/p/8976840.html

时间: 2024-10-12 05:47:51

Redis相关注意事项的相关文章

redis 相关知识

1. 什么是Redis Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Remote Dictionary Server(远程数据服务), 该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string.list.set.zset(sorted set).hash. 通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等 等,分类的标准也不

Redis相关知识整理

Redis相关知识整理 1. Redis和MySQL的区别?a).mysql是关系型数据库,而redis是NOSQL,非关系型数据库.mysql将数据持久化到硬盘,读取数据慢,而redis数据先存储在缓存中,读取速度快,但是保存时间有限,最后按需要可以选择持久化到硬盘. b).mysql作为持久化数据库,每次访问都要在硬盘上进行I/O操作.频繁访问数据库会在反复连接数据库上花费大量时间.redis则会在缓存区存储大量频繁访问的数据,当浏览器访问数据的时候,先访问缓存,如果访问不到再进入数据库.

Redis相关命令及Jedis的demo(转)

连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 持久化 save:将数据同步保存到磁盘 bgsave:将数据异步保存到磁盘 lastsave:返回上次成功将数据保存到磁盘的Unix时戳 shundown:将数据同步保存到磁盘,然后关闭服务 远程服务控制 info:提供服务器的信息和统计 monitor:实时转储收到的请求 slaveof:改变复制策略设置 config:在运行时配置Redis服务器 对value操作的命令 exists(key):确认一个k

Redis相关指令文档

连接控制 QUIT 关闭连接 AUTH (仅限启用时)简单的密码验证 适合全体类型的命令 EXISTS key 判断一个键是否存在;存在返回 1;否则返回0; DEL key 删除某个key,或是一系列key;DEL key1 key2 key3 key4 TYPE key 返回某个key元素的数据类型 ( none:不存在,string:字符,list,set,zset,hash) KEYS pattern 返回匹配的key列表 (KEYS foo*:查找foo开头的keys) RANDOMK

redis配置注意事项

最近在看redis方面的官方文档,redis-server的相关配置建议如下: 1.vm.overcommit_memory = 1 2.禁用linux内核特性transparent huge pages,echo never > /sys/kernel/mm/transparent_hugepage/enabled 3.设置swap 4.设置maxmemory,限制redis使用的内存数量,而非自动: 5.复制模式下建议master节点启用持久化选项:

Editplus配置VC++及相关注意事项

原本用的是VC++2010 现在换成了Visual Studio 2013,editplus相关配置方法基本不变.采用的办法是网上找到的cl.bat方法,这里总结下: 到VC的安装目录下,我这里是D:\VS\VS2013\VC\bin,在这里大家应该能看到vcvars32.bat和cl.exe两个文件.新建个文本文件,改名为cl.bat,我这里精简下,内容为: @echo off call "%VS120COMNTOOLS%vsvars32.bat" if "%1"

redis相关小记

1,安装: wget && tar zxvf && make make命令执行完成后,会在当前目录下生成本个可执行文件,分别是redis-server.redis-cli.redis-benchmark.redis-stat,它们的作用如下: redis-server:Redis服务器的daemon启动程序 redis-cli:Redis命令行操作工具.当然,你也可以用telnet根据其纯文本协议来操作 redis-benchmark:Redis性能测试工具,测试Redis

Redis的安装和使用之------Redis相关运用

一.简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式

Redis相关的小工具:redis-load、redis-stat

redis-load.redis-stat是Redis作者antirez写的两个小工具,其中: redis-load是Redis的一个压力测试工具 redis-stat是Redis的状态监控工具 相关代码见:https://github.com/antirez/redis-tools 1 下载代码 $ git clone https://github.com/antirez/redis-tools.git 2 编译 $ cd redis-tools $ make all 3 redis-load