Redis总结(上)

1. 基本数据类型

  • string

在 Redis 中字符串类型的 Value 最多可以容纳的数据长度是 512M

操作:

set操作

get操作

setnx(set if not exist)操作

exists 操作

mset 操作(原子性)

setex (set with expire) 设置过期时间

incr、decr、decrby、incrby、range等等

用途:

计数

单一值缓存

  • list

操作:

rpush、lpush

lpop、rpop

lrange、llen、lindex、lrem等等

用途:

队列

  • set

特性

只能保存 2^32-1 个元素

可以求交集、并集、差集。可以利用此特性完成一些应用上的需求

操作:

sadd操作

smove

smembers people

scard people

srandmember 操作

sdiff 差集

sinter交集

sunion并集

sismember、srem、smembers

用途:

通过交集找到共同好友、共同粉丝、共同关注的人,相似推荐等

抽奖

  • zset

特性

set的基础上、每一个元素有一个评分

底层数据结构:跳表

操作:

zadd 添加(可同时添加多个)

zrange ..... (withscore)

zrangebyscore 直接根据分数范围查询,不显示分数

zrem 移除

zcard 操作

用途:

排行榜

  • hash

特性

根据key存对象

操作:

hmset、hset添加操作

hget、hmget获取操作

hdel删除

hexists判断是否存在

getall、hlen、hkeys(获取所有key)

用途:

缓存

2. 特殊数据类型

  • geohash

存放数据和他的坐标

geo底层的数据结构就是zset!

底层原理:

geohash算法

1、地球纬度区间是 [-90,90], 经度区间是 [-180,180]。 将它展开想象长一个矩形为

2、将平面切割多个子空间,编号然后遍历

对大部分而言,编码相似的距离也相近, 但 Peano 空间填充曲线最大的缺点就是突变性,有些编码相邻但距离却相差很远,比如 0111 与 1000,编码是相邻的,但距离相差很大。Peano 曲线就是一种四叉树线性编码方式

Peano曲线注意点(也就是缺点)

临界点的编码值差异很大

Peano 空间填充曲线,这种曲线会产生突变

类似的还有Hilbert空间填充曲线,并且相较于Peano没有突变。但是代码实现较为复杂。因此大部分geohash选择用Peano曲线

3、通过base32或base36算法将二进制数转成字符串

redis中geohash的实现

操作:

geoadd(可一次性添加多个)

geopos获取经度和维度

geodist计算两点之间的距离

georadius 获取半径元素

zrem指令对元素进行删除(zset指令)

使用注意:

集群环境下经常涉及到集合在节点间进行迁移,单个数据量过大会对集群迁移造成影响。建议Geo数据使用单独的redis,并且不使用集群

  • Hyperloglog

类似于只统计个数的set,当数据量特别大,且只需要统计信息时使用;每个HyperLogLog只占用12KB

操作:

pfcount

pfadd

pfmerge

实现原理:每添加一个元素、把该元素生成一个随机整数、并记录低位连续零位的最大长度K,通过K值估算随机数的数量N:N=2^K。然后采取多个算法加权得到比较精确的值

为什么要占用12KB字节。redis的hyperloglog采用16384个桶,也就是2^13,每个桶的 maxbits需要6个位(最大值63),总共最大内存就是2^13 * 6/8 = 12KB

用途:

模糊统计访问人数

  • bitmap

Bitmap 位图:数据结构!都是操作二进制位来进行记录,就只有0和1两个状态!!!他的内容其实就是字符串,也就是byte数组,且至少有8位

操作:

setbit

getbit

bitcount

零存整取、零存整取、整存零取

bitcount位图统计指令:统计一定范围内

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

后端开发面试高频八股+算法 文章被收录于专栏

涵盖各大厂考官最爱问知识点,22年最新整理!

全部评论
m
点赞 回复 分享
发布于 2022-11-07 21:45 福建
m
点赞 回复 分享
发布于 2022-11-21 22:09 北京

相关推荐

2024-12-28 20:22
西安交通大学 Java
携程 酒店部门 25*15,留学生补贴 计算机科班
点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
牛客539033066号:放心吧,这里面一大半都不会去面试的,剩下一半面过了最后还是回拒,实际上免笔试的那些bg的人,没多少愿意去这些岗位,薪资水平在那里
点赞 评论 收藏
分享
评论
3
14
分享
牛客网
牛客企业服务