《Redis深度历险》学习笔记:GeoHash

  • 经纬度坐标使用关系数据库 (元素 id, 经度 x, 纬度 y) 存储,可以指定一个半径 r 使用一条 SQL 圈出一定范围内的元素。

    1
    2
    3
    4
    5
    6
    7
    
     SELECT
         id 
     FROM
         positions 
     WHERE
         x0 - r < x < x0 + r 
     AND y0 - r < y < y0 + r
    
  • GeoHash 算法将二维的经纬度数据映射到一维的整数,这样所有的元素都将在挂载到一条线上,距离靠近的二维坐标映射到一维后的点之间距离也会很接近。

  • 映射算法实际是对地图进行精细切分,然后对这些方格进行整数编码。编码后每个地图元素的坐标都将变成一个整数,越是靠近的方格编码越是接近。

……

《Redis深度历险》学习笔记:位图

  • 对于开关 / 签到类型的业务数据,可以考虑采用 bitmap(即位图)的数据结构进行存储

  • 位图的最小单元是 bit,每个 bit 的取值只能是 0 或 1,如下图所示:
    位图

  • Redis 字符位顺序与其 ASCII 码二进制值位顺序相反,多个字符会自动扩容连接在一起:
    image.png image.png

……

《Redis深度历险》学习笔记:介绍&基础数据结构

介绍

  • Redis(Remote Dictionary Service),由意大利人 Salvatore Sanfilippo(网名Antirez)开发。
  • Redis 默认端口 6379 是「MERZ」一词在手机九宫格键盘上对应的数字位置。「MERZ」在 Antirez 的朋友圈语言中是「愚蠢」的代名词,它源于意大利广告女郎「Alessia Merz」在电视节目上说了一堆愚蠢的话。
……