zoukankan      html  css  js  c++  java
  • redis学习第二天

    Redis 在 2.8.9 版本之后添加了 HyperLogLog 结构

    Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

    在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

    但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

    什么是基数?

    比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

    操作HyperLogLog 结构的命令:

    添加指定元素到 HyperLogLog 中:pfadd

    返回给定 HyperLogLog 的基数估算值:pfcount

    将多个 HyperLogLog 合并为一个 HyperLogLog:pfmerge

    redis发布订阅

    说实话,发布订阅这个名词好奇怪,说白了只是一种消息通信模式。发送者(pub)发送消息,订阅者(sub)接收消息。直接叫消息机制不就行了,还订阅者,不就是接收方么,搞得订阅杂志的味道了。

    借用一下图片,更直观的说明他的机制

    频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系

    当有消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端

    redis发布订阅的命令主要有:创建并订阅频道subscribe,退订频道unsubscribe,选择频道发布消息publish

    Redis事务

    redis既然是数据库,当然和其他数据库一样有事务操作。他有两大特性,隔离性和原子性。

    Redis事务由命令MULTI命令启动,然后需要传递一个应该在事务中执行的命令列表,然后整个事务由EXEC命令执行。

    redis 127.0.0.1:6379> MULTI 
    OK 
    List of commands here 
    redis 127.0.0.1:6379> EXEC

    事务相关的命令有:取消事务discard,exec执行事务,标记事务块开始multi,

    监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断--》watch key

    取消 WATCH 命令对所有 key 的监视--》unwatch

     redis脚本

    Redis 脚本使用 Lua 解释器来执行脚本,最常用的命令eval XXX 参数个数 key [key ...] arg [arg ...] 用来执行脚本

    其他的命令还有:

    1)script load XXX,用来将脚本加载进脚本缓存

    2)script kill XXX,用来杀死当前正在执行的脚本

    3)script flush,从脚本缓存中移除所有脚本

    4)script exists XXX,查看指定的脚本是否已经被保存在缓存当中

    5)evalsha XXX 参数个数 key [key ...] arg [arg ...],根据给定的 sha1 校验码,执行缓存在服务器中的脚本

  • 相关阅读:
    UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)
    Codeforces 482E ELCA (LCT)
    Codeforces 798D Mike and distribution (构造)
    AtCoder AGC017C Snuke and Spells
    HDU 6089 Rikka with Terrorist (线段树)
    HDU 6136 Death Podracing (堆)
    AtCoder AGC032D Rotation Sort (DP)
    jenkins+python+kubectl实现批量更新k8s镜像
    Linux 下载最新kubectl版本的命令:
    jenkins X 和k8s CI/CD
  • 原文地址:https://www.cnblogs.com/timePasser-leoli/p/7339040.html
Copyright © 2011-2022 走看看