起源 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要么一个也连贯不上