乐趣区

关于redis:Redis-开篇

起源 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 要么一个也连贯不上
退出移动版