起源 java 技术栈【Redis 开篇】
Redis 开篇
1、概述
Redis:REmote DIctionary Server(近程字典服务器)是齐全开源收费的,用 C 语言编写的,恪守 BSD 协定,是一个高性能的 (key-value) 分布式内存数据库,基于内存运行并反对长久化的 NoSQL 数据库,是以后最热门的 NoSql 数据库之一, 也被人们称为数据结构服务器。
2、特点
redis 与其余 key-value 缓存产品有一下三个特点
- Redis 反对数据的长久化,能够将内存中的数据放弃在磁盘中,重启的时候能够再次加载进行应用
- Redis 不仅仅反对简略的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储
- Redis 反对数据的备份,即 master-slave 模式的数据备份
3、能做什么
- 内存存储和长久化:redis 反对异步将内存中的数据写到硬盘上,同时不影响持续服务
- 取最新 N 个数据的操作,如:能够将最新的 10 条评论的 ID 放在 Redis 的 List 汇合外面
- 模仿相似于 HttpSession 这种须要设定过期工夫的性能
- 公布、订阅音讯零碎
- 定时器、计数器
4、装置和部署
Redis 装置和部署
5、Redis 数据类型
- String(字符串)string 是 redis 最根本的类型,你能够了解成与 Memcached 截然不同的类型,一个 key 对应一个 value。string 类型是二进制平安的。意思是 redis 的 string 能够蕴含任何数据。比方 jpg 图片或者序列化的对象。string 类型是 Redis 最根本的数据类型,一个 redis 中字符串 value 最多能够是 512M
- Hash(哈希)Redis hash 是一个键值对汇合。Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特地适宜用于存储对象。相似 Java 外面的 Map<String,Object>
- List(列表)Redis 列表是简略的字符串列表,依照插入程序排序。你能够增加一个元素导列表的头部(右边)或者尾部(左边)。它的底层理论是个链表
- Set(汇合)Redis 的 Set 是 string 类型的无序汇合。它是通过 HashTable 实现实现的
- zset(sorted set:有序汇合)Redis zset 和 set 一样也是 string 类型元素的汇合, 且不容许反复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为汇合中的成员进行从小到大的排序。zset 的成员是惟一的, 但分数 (score) 却能够反复。
6、文件阐明
- redis-benchmark: 性能测试工具,能够在本人本子运行,看看本人本子性能如何
- redis-check-aof:修复有问题的 AOF 文件
- redis-check-dump:修复有问题的 dump.rdb 文件
- redis-cli:客户端,操作入口
- redis-sentinel:redis 集群应用
- redis-server:Redis 服务器启动命令
7、启动后杂项常识
- 单过程:单过程模型来解决客户端的申请。对读写等事件的响应是通过对 epoll 函数的包装来做到的。Redis 的理论处理速度齐全依附主过程的执行效率,epoll 是 Linux 内核为解决大批量文件描述符而作了改良的 epoll,是 Linux 下多路复用 IO 接口 select/poll 的加强版本,它能显著进步程序在大量并发连贯中只有大量沉闷的状况下的零碎 CPU 利用率。
- 默认 16 个数据库,相似数组下表从零开始,初始默认应用零号库
- 设置数据库的数量,默认数据库为 0,能够应用 SELECT <dbid> 命令在连贯上指定数据库 id databases 16
- select 命令切换数据库
- dbsize 查看以后数据库的 key 的数量
- flushdb:清空以后库
- Flushall;通杀全副库
- Redis 索引都是从零开始
- 对立明码治理,16 个库都是同样明码,要么都 OK 要么一个也连贯不上