Redis:看完就比常人多会三种类型实战,可以拿去炫耀了

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

**WITHDIST:**在返回查找到位置元素, 同时对应位置元素与中心之间的距离也一并返回。

**WITHCOORD:**将位置元素的经度和维度也一并返回。

**WITHHASH:**以 52 位有符号整数的形式返回, 返回位置元素经过原始 geohash 编码的有序集合分值,即一串字符串;

**COUNT:**代表返回位置信息的条数,类似于分页条数;

6.GEORADIUSBYMEMBER:指定的对应位置元素为圆心,查找指定半径范围的位置元素;GEORADIUS命令是通过指定经纬度为圆心,其他使用方式一致;

GEORADIUSBYMEMBER key member 半径 m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

命令功能及参数说明就简单说这么多(我怕说理论),欲知详情,请小伙伴去官网瞅瞅;

image

接下来结合应用场景进行命令实战,不然小伙伴要忍不住啦↓↓↓

应用场景实战1

绿色出行,小黄、小蓝、青桔、哈罗各种共享自行车应该已经是很多小伙伴们出行必用了吧,来,先截个哈罗的图看看:

image.png

图中显示定位附近的小车,小伙伴可以先想想,如果这个需求给自己,怎么实现?

image

如果用Redis,这样搞试试:

每一辆共享单车肯定有定位功能,将其定位信息(经纬度)存储到后台管理系统中,这里我们模拟定位信息存储,我们用百度地图坐标拾取器可以取得地图上任意一点的经纬度信息,如下图:

image

网页地址为:
http://api.map.baidu.com/lbsapi/getpoint/index.html

模拟共享单车定位信息存储到后台Redis:

image

当我们打开手机时,App同样会通过手机进行定位,比如得到对应位置的经纬度信息为:113.768365(经度),34.724814(纬度),这样就可以指定用户的定位信息为中心,去查找附近指定半径的单车,然后将其标注在地图上:

image

应用场景实战2

再来一个需求,比如说微信附近的人,直播APP附近直播的播友,还有某陌附近的美女,如下图:

image

如果用Redis实现,同样是通过APP(比如微信)将用户的定位信息保存到后台Redis中,这里还是使用百度地图拾取器的方式取得位置信息模拟将定位信息保存在Redis:

image.png

附近餐馆、附近加油站、附近酒店同样的原理,最后关于具体的信息可以通过得到信息(比如说用户ID、共享单车标识等)去存储详细信息的数据库中查询。

bitmap

bitmap在Redis2.2.0版本加入,其并不是一种实际的数据类型,而是在字符串类型基础上定义的一组面向位的操作。因为字符串是二进制安全的blob,对应value能存储的最大长度是512 MB,即可以设置2^32个不同的位;大概的结构如下:**
**

image

实践出真理,看看其类型到底是不是string类型:

image.png

image

常用命令如下:

SETBIT:设置指定key中指定位置(offset)的值(0 或 1);

SETBIT key offset value

GETBIT:获取指定key中指定位置(offset)的值,未设置过默认返回0;

GETBIT key offset

BITCOUNT:统计指定key位置为1的数量,可以指定区间(这里的区间以字节(byte)为单位);

BITCOUNT key [start end]

BITOP:进行位运算,支持四种表达式运算: AND(交集), OR(并集), XOR(异或)和NOT(取非)

BITOP operation destkey key [key …]

operation 可以指定对应的运算方式,运算的结果存入destkey中;

BITPOS:返回指定key中指定值的第一个位置;

BITPOS key bit [start] [end]

模拟应用场景实战:

bitmap由于存储的值只能是0或1,所以很适合两种状态的数据记录和分析,比如说是否签到,是否登录,然后通过签到记录的数据可以统计周、月、年签到数,通过登录的数据可以分析用户是否活跃;

应用场景用户签到

比如某多多连续签到送现金、运动打卡App(比如Keep)、学习打卡App或者小程序,都会有对打卡数据的统计,如下图某音极速版连续签到送积分:

image

如果用Redis实现,如下:

image.png

应用场景用户登录即用户活跃分析:

image.png

如下统计逻辑:

image.png

bitmap适合数据量比较大的场景,如果数据几十上千,用bitmap反而相对比较占空间,直接使用用户ID作为Key使用set存储,但是如果数据量大时,Key值所占空间比较大,比较浪费,而bitmap用512M内存就能标识40亿数据状态;当然,不介意bitmap的位数很大,设置或分析数据的时候可能会导致堵塞,所以当位数很大时,建议将其拆分为多个Key,保证分析的高效。

先休息一下,晃晃头,眨巴眨巴眼睛,然后继续往下↓↓↓

image.png

hyperloglog

先说说什么是基数?

基数(cardinal number)在数学上,是集合论中刻画任意集合大小的一个概念。两个能够建立元素间一一对应的集合称为互相对等集合。例如3个人的集合和3匹马的集合可以建立一一对应,是两个对等的集合。

百度百科

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

菜鸟教程

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

面试了阿里,滴滴,网易,蚂蚁,最终有幸去了网易【面试题分享】

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

的朋友,可以添加V获取:vip1024b (备注Java)**
[外链图片转存中…(img-j9fHdk1j-1713646229399)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值