首页 > 数据库 >Redis新数据类型

Redis新数据类型

时间:2023-06-02 16:25:35浏览次数:36  
标签:数据类型 Redis 用户 偏移量 Bitmaps HLL key

一、Bitmaps

Bitmaps本身不是一种数据类型,实际上它是字符串(key-value),但是它可以对字符串的位进行操作

可以把Redis想象成一个以位为单位的数组,数组每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量

* setbit key offset value    设置Bitmaps中某个偏移量的值(0或1), offset偏移量从0开始

实例:每个独立用户是否访问过网站存放在Bitmaps中,将访问的用户记作1,没有为0,用偏移量作为用户id

Bitmaps         0 1 0 0 0 0 0 0 1 1 1

偏移量(用户id)         0 1 2 3 4 5 6 7 8 9 10

注:很多应用的用户id以一个指定数字如1000开头,直接将用户id与偏移量对应会造成一定浪费,可以将用户id-指定数字。

在第一次初始化Redis时,如果偏移量非常大,那么整个初始化过程会比较慢,造成Redis堵塞

* getbit key offset      获取Bitmaps中某个偏移量的值

* bitcount key [start end]   统计【起始 结束】字节比特值为1的数量

* redis的setbit设置或清除的是bit位置,而bitcount计算的是byte位置

* bitop and(or/not/xor) destkey key……     bitop是一个复合操作,可以做多个bitmap的and交集、or并集、not非、xor异或操作并将结果保存在destkey中。

Bitmaps和set对比:Bitmaps比较节省空间。但是若活跃用户量实际很少,Bitmaps就不太合适,因为大部分位都是0。

 

二、HyperLogLog

求集合中不重复元素个数的问题称为基数问题。Redis HyperLogLog是用来做基数统计的算法,优点是在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的,并且是很小的。

* pfadd key element 【element……】添加指定元素到HyperLogLog中  成功返回1,否则返回0

* pfcount key [key……]       计算HLL的近似基数,可以计算多个HLL,比如用HLL存储每天的UV,计算一周的UV可以使用7天的uv合并计算

* pfmerge destkey sourcekey [sourcekey……]  将一个或多个HLL并存后的结果存储在另一个HLL中,比如每月活跃用户可以使用每天的活跃用户来合并计算即可

 

三、Geospatial

* geoadd key longitude latitude memeber [longtiude latitude  member], 添加地理位置(经度、纬度、名称)

* geopos key member[memeber……]    获得指定对象地区的坐标值。

* geodist key member1 member2 …… [m|  km | ft | mi]      获取两个位置之间的直线距离

* georadius key longitude latitude radius m|km|ft|mi      以给定的经纬度为中心,找出一半径内的元素

标签:数据类型,Redis,用户,偏移量,Bitmaps,HLL,key
From: https://www.cnblogs.com/fxzm/p/17452117.html

相关文章

  • 【python基础】复杂数据类型-列表类型(数值列表)
    1.数值列表列表非常适合用于存储数字集合,而python提供了很多工具,可帮助我们高速地处理数字列表。1.1range函数python的range函数能够轻松的生成连续一系列数字。其语法格式:range(第一个数值,第二个数值)编写程序如下所示运行结果如下所示我们通过运行结果可以看出,生成的......
  • 好饭不怕晚,扒一下Redis配置文件的底Ku
    忙碌是一种幸福,让我们没时间体会痛苦;奔波是一种快乐,让我们真实地感受生活;疲惫是一种享受,让我们无暇空虚。这几句话就能简单概括我最近的工作和生活。好多小伙伴都来私信“催更”,今天它来了!为了表达阿Q的歉意,特赠送「亿级流量Java高并发与网络编程实战」一本,规则见文末。在往期的文......
  • RedisTemplate关于key出现前缀\xac\xed\x00\x05t\x00\x0f
    原因:key没有进行序列化,需要加入redis的配置进行序列化/***@Authorjohnson*@Date2023/6/2*/@ConfigurationpublicclassRedisConfig{@BeanpublicRedisTemplate<String,Object>redisTemplate(RedisConnectionFactoryredisConnectionFactory){......
  • 五、python基本数据类型分类
    五、Python基本数据类型分类1.基本数据类型(1)数字int整型(1,2,-1,-2)float浮点型(34.678)bool布尔型(True/False)complex复数(4+3J,不应用于常规编程,这种仅了解一下就好(2)字符串str单引号和双引号内表示的内容为字符串“helloworld""12345"(3)列表list......
  • 2023-06-01:讲一讲Redis常见数据结构以及使用场景。
    2023-06-01:讲一讲Redis常见数据结构以及使用场景。答案2023-06-01:字符串(String)适合场景缓存功能Redis作为缓存层,MySQL作为存储层,在大部分请求中,数据的读取通常是从Redis中获取。由于Redis具有支持高并发的特性,因此缓存层通常能够加速读写操作,并减轻后端服务的压力。采用Redi......
  • 2023-06-01:讲一讲Redis常见数据结构以及使用场景。
    2023-06-01:讲一讲Redis常见数据结构以及使用场景。答案2023-06-01:字符串(String)适合场景缓存功能Redis作为缓存层,MySQL作为存储层,在大部分请求中,数据的读取通常是从Redis中获取。由于Redis具有支持高并发的特性,因此缓存层通常能够加速读写操作,并减轻后端服务的压力。采......
  • 虹科干货 | 虹科Redis企业版数据库的延迟如此之小,proxy功不可没!
    在Redis企业版集群的后台发生了许多事件,proxy(代理)隐藏了数据库客户端的所有活动。大多数开发人员在构建应用程序时都会从小规模开始,使用简单的Redis开源(RedisOSS)数据库。在初期阶段,使用数据库非常直接,只需连接到单一的端点并发送请求。然而,当Redis应用程序的需求变得更加复杂时......
  • Java中使用Redis
    应用框架SpringDataRedisSpringDataRedis介绍SpringDataRedis是Spring的一部分,提供了在Spring应用中通过简单的配置就可以访问Redis服务,对Redis底层开发包进行了高度封装。在Spring项目中,可以使用SpringDataRedis来简化Redis操作。Maven坐标点击查看代......
  • redis set nx
    -1永久存在键值+1......
  • 如何查看redis占用内存大小
    http://www.daixiaorui.com/read/209.html#Memoryused_memory:13490096//数据占用了多少内存(字节)used_memory_human:12.87M//数据占用了多少内存(带单位的,可读性好)used_memory_rss:13490096 //redis占用了多少内存used_memory_peak:15301192//占用内存的峰值(字节)used_memory_p......