1.Redis介绍?
1.1 Redis是什么?
Redis(Remote Dictionary Server,远程字典服务器)是一个开源免费的,用C语言编写的一个高性能的分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。是当前最热门的NoSql服务器之一,也被人们成为数据结构服务器(redis的所有功能就是将数据以其固有的几种结构保存,并提供给用户操作这几种结构的接口)。
1.2 Redis的特点
- Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启时候可以再此加载进行使用。
- Redis是一个key-value存储系统。它的value类型除String以为,还支持list(链表)、set(集合)、hash(哈希散列)和zset(有序集合)几种数据类型。
- Redis支持数据备份,即master-slave模式的备份。
1.3 Redis能干什么?
Redis主要是用来做缓存的,但不是仅仅只能做缓存。
- 缓存(内存的存储和持久化)使用最多
数据查询、新闻内容、商品内容等等 - Session共享
分布式集群架构中的session分离。 - 定时器和计数器
网站访问统计和应用排行榜。 - 任务队列
秒杀、抢购、12306等等 - 获取最新N个数据的操作。
可以将最新10条评论的id放在redis的list集合中。 - 发布、订阅信息系统(充当消息中间件)
2.下载及安装
2.1 下载
2.1.1 登录Redis的官网
https://redis.io/
http://www.redis.cn/
2.1.2 点击上图链接,进行下载
2.2 安装
2.2.1 安装前的准备工作
redis是C语言开发,建议在linux上运行,本教程使用Centos7作为安装环境。
安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc,联网执行如下命令
yum install gcc-c++
2.2.2 上传下载好的redis-5.0.5.tar.gz到linux中
我们放到/usr/local/temp文件夹下。
2.2.3 解压源码
tar -zxvf redis-5.0.5.tar.gz
2.2.4 进入解压后的目录编译
cd /usr/local/redis-5.0.5
make
如果第一次make出现由于gcc没安装导致的错误。
第二次make时需要执行如下命令 make distclean
然后再make
2.2.5 进入解压后目录安装redis到指定目录
如 /usr/local/redis
cd /usr/local/redis-5.0.5
make PREFIX=/usr/local/redis install
2.2.6 redis启动
- 前端模式启动
直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。 - 后台模式启动
找到配置文件redis.conf,redis.conf在redis源码目录。
拷贝配置文件到安装目录的bin目录下
cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis/bin
修改bin目录下redis.conf配置文件, daemonize为 yes 。
启动时,加上redis.conf
cd /usr/local/redis/bin
./redis-server redis.conf
2.2.7查看redis状态
ps aux|grep redis
执行完该命令,如果是显示一行,则没有启动redis。如果是多行这代表redis服务已经启动。
2.2.8关闭redis服务
redis-cli -p redis 端口号 shutdown
3 Redis基础知识介绍
- Redis默认安装16个库
- 通过select+数据库下表[从零开始]切换库
select 4
- 通过dbsize命令可以查看数据库key的个数。
dbsize
- 通过keys命令可以查看数据库中的key值
keys *
- 通过FLUSHDB命令清空当前库。
- 通过FLUSHALL命令清空所有库。
- redis默认端口:6379
4 Redis常用的五大数据类型
- String(字符串)
String是redis最基本的类型。
String类型是二进制安全的,redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。一个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)却可以重复。
5 Redis配置文件详解
5.1 在哪里?
在redis源码解压后的目录中。名字叫:redis.conf
5.2 为什么我们在linux中大多数配置文件,要拷贝一份运行?
避免我们把原始的配置改乱,而无法恢复。
5.3 redis.conf组成
5.3.1Units单位
- 大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit
- 对大小写不敏感
5.3.2 INCLUDES包含
和我们的struts2配置文件类似,可以通过includes包含,redis.conf可以作为总闸,包含其他redis的配置。
5.3.3 GENERAL 配置
5.3.3.1 Redis配置设置
- CONFIG 命令查看配置项
127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
示例:
127.0.0.1:6379> CONFIG GET loglevel
1)"loglevel"
2) "notice"
- CONFIG 命令设置配置项
127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
示例
127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
127.0.0.1:6379> CONFIG GET loglevel
1)"loglevel"
2)"notice"
可以修改redis.conf来设置配置项
5.3.3.2 daemonize(守护进程)
Redis 默认不是以守护进程的方式运行,可以通过该配置项修改,使用 yes 启用守护进程(Windows 不支持守护线程的配置为 no )
5.3.3.3 pidfile
当 Redis 以守护进程方式运行时,redis会生成一个pid文件,默认会生成在/var/run/redis.pid。当然,你可以通过pidfile来指定pid文件生成的位置
5.3.3.4 port
指定 Redis 监听端口,默认端口为 6379,作者在自己的一篇博文中解释了为什么选用 6379 作为默认端口,因为 6379 在手机按键上 MERZ 对应的号码,而 MERZ 取自意大利歌女 Alessia Merz 的名字
5.3.3.5 tcp-backlog
默认值:511。
设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。目前而言,我们使用默认值,足够使用。
5.3.3.6 timeout
当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能。设置为0:表示连接一直连着不关闭。
5.3.3.7 bind
绑定的主机地址
5.3.3.8 tcp-keepalive
单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60。表示60秒进行一次tcp连接检测。
5.3.3.9 loglevel
指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 notice。
5.3.3.10 logfile
日志记录方式,默认为标准输出,如果配置 Redis 为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给 /dev/null
5.3.3.11 databases
设置数据库的数量,默认redis安装有16个库,默认当前数据库为0号库,可以使用SELECT 命令在连接上指定数据库id