redis特性(一)
  4Sc2EobNVfno 2023年11月02日 72 0

1. 特性:

  • key-value存储服务系统.
  • 有点类似java的map、python的dict.
  • 速度快、持久化、多种数据结构、主从复制、高可用、分布式.
  • 不依赖外部库.

2. 数据结构:

其它衍生的数据类型:

  • bitmaps位图 => 本质是string类型
  • HyperLogLog => 本质是string类型
  • GEO地图信息定位 => 本质是有序集合 a. 适合O2O产品计算附近的餐馆 b. 可以计算经度和纬度

(1). 内部编码:

  • 时间与空间的切换: a. 如果元素比较小的时候,就算是压缩过的,处理起来也比较快,就可以用空间换时间. b. 在元素进行遍历、查找,不会消耗很多时间和CPU,使用更小的空间来达到更优的内存使用效果. c. 如hash结构,内部编码可能hashtable(哈希表)或ziplist(压缩列表).
  • 为什么要给每种数据结构设置内部编码? a. 一旦改进内部编码,无需改动外部数据结构和命令. b. 多种内部编码实现可以在不同场景下发挥各自的优势. 1. 如ziplist比较节省内存,但在列表元素比较多的情况下,性能会有所下降. 2. 此时,Redis会根据配置选项将列表类型的内部实现转换为linkedlist.
  • redis源码有一个redisObject的结构体,面向接口编程: typedef struct redisObject { // 数据类型:string、hash、list、set、sorted set unsigned type:4; // 编码方式:raw、int、ziplist、linkedlist、hashmap、intset unsigned encoding:4; unsigned lru:REDIS_LRU_BITS; /* lru time (relative to server.lruclock) */ int refcount; // 数据指针 void *ptr; } robj;

3. 速度快:

  • 计算机的存储介质: 寄存器、一级缓存、二级缓存、内存、本地硬盘、移动硬盘 fast ---------------------------------------> slow small ---------------------------------------> big
  • 存储在内存中,电寻址.
  • c语言实现的.
  • 线程模型是单线程.

4. 持久化:

redis所有数据保存在内存中,对数据的更新将异步地保存到磁盘中.

5. 功能丰富:

  • 基于消息的发布订阅功能
  • lua脚本自定义,实现自定义的命令
  • 事务
  • pipeline
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月31日   29   0   0 Dockerredis
  xaeiTka4h8LY   2024年05月31日   38   0   0 nosqlredis
  xaeiTka4h8LY   2024年04月26日   52   0   0 yumredis
4Sc2EobNVfno
作者其他文章 更多