一般,在系统中,咱们会把数据交由数据库来存储,但传统的数据库增删查改的性能较差,且比较复杂。根据 80/20 法则,百分之八十的业务访问集中在百分之二十的数据上。是否能够有一个存在于物理内存中的数据中间层,来缓存一些经常使用的数据,解决传统数据库数据读写性能问题。经常使用的数据都存储在内存中,读写性能很是可观。git
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型的高性能的key-value数据库。它支持存储的value类型包括 string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)和 hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操做,并且这些操做都是原子性的。在此基础上,redis支持各类不一样方式的排序。redis会周期性的把更新的数据写入磁盘或者把修改操做写入追加的记录文件,而且在此基础上实现了master-slave(主从)同步。github
> redis数据库彻底在内存中,使用磁盘仅用于持久性。不只可用做缓存,更可为一种key-value存储,他彻底可替代后端的存储服务,但须要作好备份。redis
> Redis能够将数据复制到任意数量的从服务器。数据库
> Redis的速度很是快,每秒能执行约11万集合,每秒约81000+条记录。vim
> 支持丰富的数据类型,Redis支持大多数开发人员已经知道的像列表,集合,有序集合,散列数据类型。这使得它很是容易解决各类各样的问题,由于咱们知道哪些问题是能够经过它的数据类型处理更好。windows
> 全部Redis操做是原子的,这保证了若是两个客户端同时访问的Redis服务器将得到更新后的值。后端
> Redis是一个多功能实用的工具,能够在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅);任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数,热点排行等。就看什么样的业务场景以及你怎么去设计使用好它的数据结构。缓存
一、安装服务器
首先能够从redis官网找一个稳定版下载:https://redis.io/download网络
# cd /usr/local # wget http://download.redis.io/releases/redis-4.0.2.tar.gz # tar zxf redis-4.0.2.tar.gz # cd redis-4.0.2
# #直接make则安装到src目录下,能够经过以下方式安装到指定目录
# make PREFIX=/usr/local/redis install
安装完后,在/usr/local/redis/bin下能够看到以下文件,同时在redis-4.0.2/src/也是存在的。
各个文件以下:
redis-benchmark Redis性能测试工具 redis-check-aof 检查aof日志工具 redis-check-rdb 检查rdb日志工具 redis-cli 链接用的客户端
redis-sentinel Redis集群的管理工具 监控多个master-slave集群,发现master宕机后能进行自动切换 redis-server Redis服务程序
启动服务:
# cd /usr/local/redis/bin # ./redis-server
# #上面是以默认的配置启动服务,能够根据指定的配置文件启动服务
# #首先将配置文件复制到安装目录下
# cp /usr/local/src/redis-4.0.2/redis.conf /usr/local/redis/
# #指定配置文件启动
# ./redis-server ../redis-conf
这样就算安装成功了:默认端口能够看到使用的是6379.
会发现启动的redis一致占据着终端,修改redis.conf,让redis之后台进程的形式运行。
# vim redis.conf
# #修改 daemonize 为 yes 便可,而后从新启动,就不会占据终端了。
测试:./redis-cli 启动客户端
二、注册成服务
将redis注册成系统服务,否则每次都要到安装目录下手动启动服务.
若是服务开着,首先把服务关掉:./redis-cli shutdown
首先将redis目录下的初始化脚本拷贝到/etc/rc.d/init.d目录,同时重命名为redis
# cp /usr/local/src/redis-4.0.2/utils/redis_init_script /etc/rc.d/init.d/redis
修改redis脚本
a) 第二行增长以下内容:# chkconfig: 2345 80 90
b) 原脚本EXEC和CLIEXEC的值改到安装目录下.
c) 在$EXEC $CONF 后边加一个&,表示让redis做为后台服务启动,不然该服务会独占输入屏。
d) 能够看到在/etc/init.d/redis文件中有这么一行:CONF="/etc/redis/${REDISPORT}.conf",启动时的默认配置文件为/etc/redis/6379.conf。因而将redis配置文件拷贝到/etc/redis/下,并命名为 6379.conf 。
# mkdir /etc/redis # cp /usr/local/src/redis-4.0.2/redis.conf /etc/redis/6379.conf
e) 至此修改完毕,注册服务
# chkconfig --add redis
f) 启动服务和中止服务命令
# service redis start # service redis stop
一、安装
首先下载windows版redis:https://github.com/MicrosoftArchive/redis/releases
这里我下载解压版:
下载完成后,解压便可:能够看到以下文件.
redis-server.exe Redis启动程序
redis.windows.conf 配置文件
经过以下命令启动:这样就表明启动成功。一样会一直占用着终端。
启动客户端进行测试:
二、注册成系统服务
redis-server.exe --service-install redis.windows.conf
redis安装完成以后,可使用图形化管理工具RedisDesktopManager,能够很方便的查看redis的全部数据。
经过管理工具咱们能够看到redis的数据库:
redis默认有16个数据库,能够经过配置文件修改。
redis下,数据库是由一个整数索引标识,默认启用0数据库,经过select命令能够切换数据库。且每一个数据库都有属于本身的空间,没必要担忧之间的key冲突。
* flushdb,清空当前数据库,flushall,清空全部数据库。
redis有不少数据类型,如string、list、set、zset等等,这里先学习redis对于key的操做命令,再学习数据类型的操做。
首先插入几条数据:
可使用模糊查询key,有三个通配符 *、?、[]。* 通配任意字符,? 通配单个字符,[] 通配某一个字符。
例如抽奖时可用于随机抽取一我的。
返回的类型可能有string、list、set、zset、hash等,但不包括int、boolean、long这种基本类型,其以字符串形式保存。
若是newkey 已经存在,则newkey的原值被覆盖
nx > not exists,即newkey不存在时才修改,发生修改时返回1,未发生修改返回0。
不存在的key忽略,返回真正删除的key的数量
pexpire key milliseconds:设置生命周期,单位毫秒。
redis的key默认是永久有效的。
pttl key:返回毫秒数。
对于不存在的key、已通过期的key返回-2;永久有效的key,返回-1。
pexpireat key milliseconds-timestamp:unix时间为毫秒。
须要将过时的时间转为Unix时间戳。
能够将设置过时时间的key转为永久有效。
最后:
不要使用太长的键,例如,不要使用一个 1024 字节的键,不只是由于内存占用,并且在数据集中查找键时须要屡次耗时的键比较。
不要使用过短的键。用”u1000flw” 取代”user:1000:followers” 做为键并无什么实际意义,后者更具备可读性,相对于键对象自己以及值对象来讲,增长的空间微乎其微。
坚持一种模式 (schema)。例如,”object-type:id” 就不错,就像”user:1000”。点或者横线经常使用来链接多单词字段,如”comment:1234:reply.to”,或者”comment:1234:reply-to”。
键的最大大小是 512MB。