1.客户端连接

为了安全保护,redis支持绑定IP跟端口,这个通过conf配置文件中的bind跟port来设置。

绑定后登录client控制台时就需要写明ip(或者hostname)跟端口了,如:

./redis_cli -h 10.137.19.19 -p 6389

redis_cli客户端支持远程登录,所以在集群环境中我们不需要切换机器,直接

./redis_cli -h hostname -p 端口 就可以登录到任何一台主机。

另外它还带有循环执行命令等各种有用的功能,可以./redis-cli --help看到

2.用keys命令查找

我们知道keys * ,是显示当前库下所有的keys。

另外keys命令还支持模糊查询:

如:

keys 28*43

会显示如下的key列表

1) "285143"

2) "286043"

keys 2??3??

显示如下:

1) "295313"

2) "295328"

3) "295332"

4) "295375"

5) "287360"

?是长度匹配,*是全局匹配。

另外想知道key的数量我们可以输入:

dbsize

3.redis的数据备份

redis是自带备份功能的,原先是通过设置配置文件中的:

save 900 1

save 300 10

save 60 10000

这样我们就可以把redis当成一个数据库来用。

但是目前为了性能需要,取消了自动备份数据功能,完全当做一个缓存数据库来用。

这样给性能测试带来也很多不便,每次都要刷数据,好在redis自带了数据备份功能:

在redis客户端上输:SAVE或者BGSAVE即可完成备份。

推荐使用BGSAVE,redis会启动一个单独的线程完成备份,而SAVE命令则不会。

数据会备份在redis的db目录下。这个是通过设置conf中的dbfilename参数来指定的。

这样下次redis重启时所有的数据都不会丢失,redis会自动去目录下读取备份文件启动。

实测了一下,启动时redis读取3G的备份文件只需要十秒左右,还是相当快的。

4.缓存有效期的设置

我们通过expire命令设置一对k—v的有效期,如:

EXPIRE key seconds

然后通过TTL命令就可以看到这个key还有多久就过期了:

TTL key

如果想这个key没有过期时间,可以这样:

PERSIST key

当然,当数据满时,redis会根据算法剔除相应的键值对,目前支持这么多方式剔除:

# volatile-lru -> remove the key with an expire set using an LRU algorithm

# allkeys-lru -> remove any key accordingly to the LRU algorithm

# volatile-random -> remove a random key with an expire set

# allkeys->random -> remove a random key, any key

# volatile-ttl -> remove the key with the nearest expire time (minor TTL)

# noeviction -> don't expire at all, just return an error on write operations

xmpp目前采用allkeys-lru,这个通过设置maxmemory-policy来确定。

5.info命令

客户端输info能显示redis目前的运行情况。

是监测时常用的一个命令。通常跟

redis_cli -r 循环次数 -i 循环时间

配合使用

如需要监视redis每秒有多少对KV由于内存满了被驱逐出去,可以这样写:

./redis-cli -r 10 -i 1 info | grep evicted_keys

6.redis内存占用

redis的内存占用在info里面可以看到:

used_memory:8536027504

used_memory_human:7.95G

used_memory_rss:8537772032

mem_fragmentation_ratio:1.00

use_tcmalloc:0

used_memory代表redis占用内存。包括redis自身程序占用的内存。

used_memory_human代表KV数据占据的内存。

used_memory_rss代表涵盖内存碎片的内存。

redis在分配内存的时候采用了malloc,类似于java的new。

目前支持三种内存分配器:tcmalloc,jemalloc和libc

对于2.2.14版本来说如果没有安装tcmalloc,jemalloc就会默认使用libc。

这个可以通过use_tcmalloc来看到使用了哪种。

mem_fragmentation_ratio则代表了分配器碎片率。(原来使用C也会产生内存碎片。。。。。。。。)

通过这几个参数基本能看到目前redis的内存情况,但是这个不是最准确的,最准确的话还是结合shell命令(如ps,top)看比较好,不过通常没有太大误差。

redis拾趣(客户端连接,keys命令,数据备份,缓存有效期等)的更多相关文章

  1. Redis客户端连接以及持久化数据(三)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  2. Redis 千万不要乱用KEYS命令,不然会挨打的

    Redis现如今使用的场景越来越多?如何批量删除key呢? 有人说用KEYS命令,刚开始学Redis的时候就是用这个命令列出库中键. KEYS命令要谨慎使用. 为何?客观别急,我们先一步步来看. KE ...

  3. Mysql数据库常用的命令 数据备份 恢复 远程

    远程数据库 格式: mysql -h主机地址 -u用户名 -p用户密码数据库 mysql -h 42.51.150.68 -u yang -p discuz mysql设置密码 mysql>us ...

  4. Redis 的 KEYS 命令不能乱用啊

    KESY 命令 时间复杂度: O(N) , 假设Redis中的键名和给定的模式的长度有限的情况下,N为数据库中key的个数. Redis Keys 命令用于查找所有符合给定模式 pattern 的 k ...

  5. redis基础操作~~数据备份与恢复、数据安全、性能测试、客户端连接、分区

    数据备份与恢复 数据备份redis save 命令用于创建当前数据库的备份. redis 127.0.0.1:6379> SAVE OK 该命令将在 redis 安装目录中创建dump.rdb文 ...

  6. Redis 数据备份与恢复,安全,性能测试,客户端连接,管道技术,分区(四)

    Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 re ...

  7. 【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤

    问题描述 Azure Redis在使用的过程中,多次无规律的出现超时问题.抓取到客户端的异常错误后,想进一步的分析是何原因导致了如下异常呢? Timeout awaiting response (ou ...

  8. Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)

    8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...

  9. Redis的KEYS命令引起宕机事件

    摘要: 使用 Redis 的开发者必看,吸取教训啊! 原文:Redis 的 KEYS 命令引起 RDS 数据库雪崩,RDS 发生两次宕机,造成几百万的资金损失 作者:陈浩翔 Fundebug经授权转载 ...

随机推荐

  1. luogu3628 特别行动队 (斜率优化dp)

    推出来式子以后斜率优化水过去就完事了 #include<cstdio> #include<cstring> #include<algorithm> #include ...

  2. Mysql服务器处理客户端请求流程

    在日常执行mysql语句的过程中,都是客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果). 看似很简单,其实不然,这内容有很多东西是需要注意的 ...

  3. 自动生成Excel 报表工具类

    /** * 输出Excel文档 * * @param response * @param sheetName 文件名称 * @param firstCellTile 第一行的标题 * @param c ...

  4. 面板 JPanel,滚动面板 JScrollPane,文本域JTextArea

    容器中可以有多个JPanel面板,一个JPanel面板中可以有多个控件. 滚动面板 JScrollPane中只能有一个控件.       public class Demo extends JFram ...

  5. 使用K-S检验一个数列是否服从正态分布、两个数列是否服从相同的分布

    假设检验的基本思想: 若对总体的某个假设是真实的,那么不利于或者不能支持这一假设的事件A在一次试验中是几乎不可能发生的.如果事件A真的发生了,则有理由怀疑这一假设的真实性,从而拒绝该假设. 实质分析: ...

  6. 安装MACOS操作步骤详解

    安装MACOS操作步骤详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于安装MAC的操作系统其实大家都知道可以让客服帮忙提供软件上的支持,而且苹果客服都很有礼貌呢,而且非常的 ...

  7. Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制

        LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRun ...

  8. UESTC - 1168 凤神与狗

    原题链接 凤神隐居山林,与猫狗为伴.起初,他拥有cc只猫和dd只狗.每天下午他随机从中选择一只出去游玩并且晚上归来.如果他带的是狗,则第二天早上狗的数量增加ww只,否则,猫的数量增加ww只.由于凤神特 ...

  9. bzoj千题计划299:bzoj1856: [Scoi2010]字符串

    http://www.lydsy.com/JudgeOnline/problem.php?id=1856 卡特兰数 从(1,1)走到(n,m),不能走y=x 上方的点,求方案数 从(1,1)走到(n, ...

  10. 解决从本地文件系统上传到HDFS时的权限问题

    当使用 hadoop fs -put localfile /user/xxx 时提示: put: Permission denied: user=root, access=WRITE, inode=& ...