Redis操作命令小结

本文最后更新于2016年8月7日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

最初学过一段时间的Redis的使用,但是后来长时间没有接触,就又忘了,往复这么弄了几次,感觉比较浪费时间,所以今天决定整理一下Redis的常见操作命令,记录到blog上来,方便以后查阅。

正文:

Redis的安装什么的就不说了,比较简单(不过要注意安全就是了),有需要的可以去看看「如何在 CentOS 7 上安装 Redis 服务器」这篇文章,内容基本都有。下面说一下Redis常见的操作命令:

0.连接

1.查看大体情况

2.查看(并切换)有哪些数据库

3.查看有哪些KEYS

4.如何获取所有的 VALUES
5.对KEY进行增删改查

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2817.html

《Redis操作命令小结》上有18条评论

  1. 用 Go 来了解一下 Redis 通讯协议
    https://github.com/EDDYCJY/blog/blob/master/golang/2018-06-07-%E7%94%A8Go%E6%9D%A5%E4%BA%86%E8%A7%A3%E4%B8%80%E4%B8%8BRedis%E9%80%9A%E8%AE%AF%E5%8D%8F%E8%AE%AE.md
    http://doc.redisfans.com/topic/protocol.html

    Redis 的客户端和服务端是通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 。

    客户端和服务器发送的命令或数据一律以 \r\n (CRLF)结尾(这是一条约定)。

    在 Redis 中分为请求和回复,而请求协议又分为新版和旧版,新版统一请求协议在 Redis 1.2 版本中引入,最终在 Redis 2.0 版本成为 Redis 服务器通信的标准方式。

    在这里我们完成了整个 Redis 客户端和服务端交互的流程,分别如下:
    1、读取命令行参数:获取执行的 Redis 命令
    2、获取请求协议参数
    3、连接 Redis 服务器,获取连接句柄
    4、将请求协议参数写入连接:发送请求的命令行参数
    5、从连接中读取返回的数据:读取先前请求的回复数据
    6、根据回复“协议”内容,处理回复的数据集
    7、输出处理后的回复内容及原始回复内容

  2. redis开发设计规范及案例分析
    https://mp.weixin.qq.com/s/vS8IMgBIrfGpZYNUwtXrPQ

    redis不是垃圾桶也不是 SUPER MAN,能力和资源都有限,不合理的使用会降低它的健康度,严重时甚至会引起redis抖动、阻塞等进而导致服务不可用,每一个使用redis的开发人员都应当掌握规范的开发和使用方法。本文整理出redis开发过程中七个较常出现的使用不合理的场景,并辅以案例进行分析说明。

    01 合理使用集合类
    使用 sortedset、set、list、hash等集合类的O(N)操作时要评估当前元素个数的规模以及将来的增长规模,对于短期就可能变为大集合的key,要预估O(N)操作的元素数量,避免全量操作,可以使用HSCAN、SSCAN、ZSCAN进行渐进操作。

    02 合理设置过期时间
    如果key没有设置超时时间,会导致一直占用内存。对于可以预估使用生命周期的key应当设置合理的过期时间或在最后一次操作时进行清理,避免垃圾数据残留redis。

    03 合理利用批操作命令
    对于大量频繁的hset操作可以使用 HMSET替代减少redis操作次数同时提升处理速度,但是要考虑单次请求操作的数量,避免慢日志。

    04 减少不必要的请求
    redis的所有请求对于不存在的key都会有输出返回,合理利用返回值处理,避免不必要的请求,提升业务吞吐量。

    05 避免value设置过大
    String类型尽量控制在10KB以内。虽然redis对单个key可以缓存的对象长度能够支持的很大,但是实际使用场合一定要合理拆分过大的缓存项,1k 基本是redis性能的一个拐点。当缓存项超过10k、100k、1m性能下降会特别明显。

    06 设计规范的key名
    可读性、简洁性、不包含特殊转义字符

    07 留心禁用命令
    keys、monitor、flushall、flushdb应当通过redis的rename机制禁掉命令,若没有禁用,开发人员要谨慎使用。其中flushall、flushdb会清空redis数据;keys命令可能会引起慢日志;monitor命令在开启的情况下会降低redis的吞吐量,根据压测结果大概会降低redis50%的吞吐量,越多客户端开启该命令,吞吐量下降会越多。

  3. 为什么说Redis是单线程的以及Redis为什么这么快!
    https://blog.csdn.net/xlgen157387/article/details/79470556

    1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);

    2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;

    3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

    4、使用多路I/O复用模型,非阻塞IO;

    5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;

  4. 那些年用过的Redis集群架构(含面试解析)
    https://mp.weixin.qq.com/s/8H-Hd169s5Hlwn5F2ec25A

    Replication+Sentinel
    Proxy+Replication+Sentinel
    Redis Cluster

    问题1:懂Redis事务么?
    问题2:Redis的多数据库机制,了解多少?
    问题3:Redis集群机制中,你觉得有什么不足的地方吗?
    问题4:懂Redis的批量操作么?
    问题5:那在Redis集群模式下,如何进行批量操作?
    问题6:你们有对Redis做读写分离么?

  5. 用户日活月活怎么统计 – Redis HyperLogLog 详解
    https://mp.weixin.qq.com/s/AvPoG8ZZM8v9lKLyuSYnHQ

    HyperLogLog 是一种概率数据结构,用来估算数据的基数。数据集可以是网站访客的 IP 地址,E-mail 邮箱或者用户 ID。

    基数就是指一个集合中不同值的数目,比如 a, b, c, d 的基数就是 4,a, b, c, d, a 的基数还是 4。虽然 a 出现两次,只会被计算一次。

    使用 Redis 统计集合的基数一般有三种方法,分别是使用 Redis 的 HashMap,BitMap 和 HyperLogLog。前两个数据结构在集合的数量级增长时,所消耗的内存会大大增加,但是 HyperLogLog 则不会。

    Redis 的 HyperLogLog 通过牺牲准确率来减少内存空间的消耗,只需要12K内存,在标准误差0.81%的前提下,能够统计2^64个数据。所以 HyperLogLog 是否适合在比如统计日活月活此类的对精度要不不高的场景。

    这是一个很惊人的结果,以如此小的内存来记录如此大数量级的数据基数。下面我们就带大家来深入了解一下 HyperLogLog 的使用,基础原理,源码实现和具体的试验数据分析。

    基本原理
    HyperLogLog 是一种概率数据结构,它使用概率算法来统计集合的近似基数。而它算法的最本源则是伯努利过程。

    伯努利过程就是一个抛硬币实验的过程。抛一枚正常硬币,落地可能是正面,也可能是反面,二者的概率都是 1/2 。伯努利过程就是一直抛硬币,直到落地时出现正面位置,并记录下抛掷次数k。比如说,抛一次硬币就出现正面了,此时 k 为 1; 第一次抛硬币是反面,则继续抛,直到第三次才出现正面,此时 k 为 3。

    对于 n 次伯努利过程,我们会得到 n 个出现正面的投掷次数值 k1, k2 ... kn , 其中这里的最大值是k_max。

a-z进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注