Redis的特点
Redis 是由意大利人 Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis 全称为:
Remote Dictionary Server(远程数据服务),该软件使用C语言编写,典型的NoSQL数据库服务器,Redis是一
个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个 数据库统统加载在内存当中进
行操作,定期通过异步操作把数据库数据flush到硬盘 上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒
可以处理超过 10万次 读写操作,是已知性能最快的Key-Value DB。
Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单 个 value 的最大限制是
1GB,不像 memcached只能保存1MB的数据,另外Redis 也可以对存入的Key-Value设置expire时间。
Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要
局限在较小数据量的高性能操作和运算上。
Redis使用的场景
(1)、会话缓存(Session Cache)
(2)、全页缓存(FPC)
(3)、队列
(4)、排行榜/计数器
(5)、发布/订阅
Redis的几种数据结构
Redis的数据结构有五种,分别是:
String——字符串
String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可
以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符串)。
Hash——字典
在 Memcached 中,我们经常将一些结构化的信息打包成 hashmap,在客户端序列化后存储为一个字符串的值
(一般是 JSON 格式),比如用户的昵称、年龄、性别、积分等。
List——列表
List 说白了就是链表(redis 使用双端链表实现的 List),相信学过数据结构知识的人都应该能理解其结构。
Set——集合
Set 就是一个集合,集合的概念就是一堆不重复值的组合。利用 Redis 提供的 Set 数据结构,可以存储一些集
合性的数据。
Sorted Set——有序集合
和Sets相比,Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进
行有序排列,
1. 带有权重的元素,比如一个游戏的用户得分排行榜
2.比较复杂的数据结构,一般用到的场景不算太多