一、Redis是干什么的?
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
作用:
1、内存存储、持久化,内存中的数据是断电即失的,所以持久化很重要(RDB、AOF)
2、效率高,可以用于高速缓存
3、发布订阅系统
4、地图信息分析
5、计时器、计数器(浏览量)
6、……
特征:
1. ⽀持多种数据结构
2. 单线程,每个命令的执⾏具备原⼦性,中途不会执⾏其他命令(指命令处理始终是单线程的,⾃ 6.x 起改为多
线程接受⽹络请求)
3. ⾼性能、低延时(基于内存、IO 多路复⽤、良好编码)
4. ⽀持数据持久化
二、Redis 基本数据结构
String 类型
⽀持存储字符串、数字、浮点数(实际存储都是字节数组)
单 key 的 value 最⼤不能超过 512 M!
实际使⽤时,通常⽤冒号连接多个词来拼接 key,⽐如 [项⽬名]:[业务名]:[类名]:[id]。在某些 GUI ⼯具中,会⾃动根据冒号来划分层级,浏览更⽅便。
Hash 类型
值是⼀个 Hash 结构(类似 Java 的 HashMap):
常⽤命令:
其实就是在 String 命令名的基础上增加了 'H' ⾸字⺟
List 类型
理解为 Java 的 LinkedList 双向链表,特点是有序、插⼊删除快、但查找性能⼀般:常⻅命令如下:
有点像操作⼀个双端队列
Set 类型
集合,类似于 Java 中的 HashSet,特点是单 set 内元素不能重复、查找性能⾼。常⻅命令如下:
分为单集合命令和多集合命令(交并差集)
SortedSet 类型
有序集合,在 set 的基础上给每个元素多存了⼀个分数,类似于 value 类型为整型的 HashMap。特点是有序、查找性能⾼,适合⽤于排⾏榜、统计 TopN。
常⻅命令:
和 set 结构的命令很像