分类:Redis

来自Wikioe
Eijux讨论 | 贡献2021年11月6日 (六) 06:02的版本 →‎客户端与开发
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索
Redis

实用资料

关于

Remote Dictionary Server(Redis)是一个开源的由 Salvatore Sanfilippo 使用 ANSI C 语言编写的'''key-value'''数据存储服务器。其值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型,所以它通常也被称为数据结构服务器。

Redis 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。

redis 的特点:

  1. redis 足够简单和稳定
  2. 支持丰富的数据结构
  3. 内存存储读写性能优秀
  4. 提供持久化的支持
  5. 支持部分事务操作

优缺点

优点:

  • 性能非常出色:纯内存操作,每秒可以处理超过 10万次读写操作,是已知性能最快的 Key-Value DB。
  • 支持保存多种数据结构,此外【单个 value 的最大限制是 512 M】,不像 memcached 只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。
    比方说用他的 List 来做 FIFO 双向链表,实现一个轻量级的高性 能消息队列服务,用他的 Set 可以做高性能的 tag 系统等等。【???】
  • 另外 Redis 也可以对存入的 Key-Value 设置 expire 时间,因此也可以被当作一个功能加强版的 memcached 来用。

缺点:

  • 数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此主要适合较小数据量的高性能操作和运算上。

关于 NoSQL

redis 属于NoSQL数据库,NoSQL 数据库叫非关系型数据库,(NoSQL = Not Only SQL),意即“不仅仅是SQL”。


按存储方式不同,数据库可以分为以下类型:

  • key-value 存储:“Berkeley DB”、“MemcacheDB”、“Redis”;【Memcache不能持久化???】
  • 文档存储:“MongoDB”、“CouchDB”;
  • 列存储:“Hbase”、“Cassandra”;

与 memcache 的区别?

二者区别主要体现在以下方面:

  1. 数据类型
    • redis:数据类型丰富,支持 set liset 等类型;
    • memcache:支持简单数据类型,需要客户端自己处理复杂对象;
  2. value大小
    • redis:单个 value 的最大限制是 1 GB;【key、string、以及集合链表哈希的单个元素,大小上限都是 512 M
    • memcache:是一个内存缓存,key 的长度小于 250 字符,单个 item 存储要小于 1M;
  3. 持久性
    • redis:支持数据落地持久化存储;
    • memcache:不支持数据持久存储(重启后数据全部丢失);
  4. 分布式存储
    • redis:支持 master-slave 复制模式;
    • memcache:可以使用一致性 hash 做分布式(无法进行数据同步);
  5. 事务
    • redis:支持事务操作;
    • memcache:只保证简单操作的原子性,不支持事务;
  6. 数据一致性不同
    • redis:使用的是单线程模型,没有 CAS 支持,使用事务保证一串命令的原子性;
    • memcache:提供了 CAS 保证多个并发访问操作同一份数据的一致性问题;
  7. I/O模型
    • redis:单线程I/O复用 单线程、I/O多路复用(并支持“通道技术”);
    • memcache:非阻塞I/O复用;【?】

简单来说,虽然二者都是 key-value 的存储服务器,但 memcache 是一个纯粹的缓存(内存缓存),而 redis 更接近一个完备的数据库(内存数据库)。

目录

基础

  1. Redis:下载安装
  2. Redis:常用命令
  3. Redis:数据类型
  4. Redis:HyperLogLog
  5. Redis:GEO(地理位置信息)
  6. Redis:Stream
  7. Redis:发布/订阅(pub/sub)
  8. Redis:事务(transaction)

高级特性

  1. Redis:持久化(persistence)
  2. Redis:复制(replication)
  3. Redis:哨兵(Sentinel)
  4. Redis:键空间通知(keyspace notification)
  5. Redis:通信协议(protocol)
  6. Redis:管道技术、分区
  7. Redis:性能测试

集群

  1. Redis:集群教程
  2. 集群规范:“https://redis.io/topics/cluster-spec

客户端与开发实践

  1. Redis:客户端
  2. Jedis、Redisson与lettuce
  3. Jedis 的编程实践
  4. spring-data-redis 的使用实践
  5. Spring 的 Redis缓存注解
  6. Redis 应用示例

分布式

  1. xxxxxx
  2. xxxxxx
  3. xxxxxx

相关知识

  1. FAQ:Redis
  2. 关于:Redis 到底是单线程还是多线程?
  3. 关于:Redis 的内存回收策略、Key 失效机制
  4. 关于:缓存穿透、缓存击穿、缓存雪崩、热点数据失效
  5. 什么是布隆过滤器(BloomFilter)?
  6. 逻辑日志与物理日志

参考

  1. 菜鸟教程:Redis
  2. Redis命令参考
  3. 《Netty、_Redis、Zookeeper高并发实战》(尼恩 著)——机械工业出版社