【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
1. Redis是什么
Redis是一个开源的,基于key-value的存储服务系统,其value支持多种数据结构,而且高性能、功能丰富。
1. Redis的特点
- 速度快:Redis的读写速度很快,原因在于其将数据存储在内存中
- 数据持久化:在内存中的数据如果不进行持久化处理,一旦丢失是无法恢复的,比如突然断电,而Redis的数据也是保存在内存中,但对数据的更新将异步的存储在硬盘上,因此就能保证数据的持久化。
- value数据支持多种数据结构:Redis中存储数据以key-value形式存在,value支持String(字符串)、HashTable(哈希表)、List(链表)、Set(不重复集合)、Sorted Set(有序不重复集合)等类型的数据
- 支持多种客户端操作语言:比如Java、Python等
- 功能丰富:不仅支持数据存储,还可以进行发布订阅、支持事务处理等。
- 采用单线程模型
- 支持主从复制
- 高可用、分布式
2. 应用场景
-
缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
-
分布式集群架构中的session分离。
-
聊天室的在线好友列表。
-
任务队列。(秒杀、抢购、12306等等)
-
应用排行榜。
-
网站访问统计。
-
数据过期处理(可以精确到毫秒)
3. Redis安装(Linux系统)
1. redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。
安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++
2. 使用redis3.0版本。3.0版本主要增加了redis集群功能。先将源码从官网下载:http://download.redis.io/releases/redis-3.0.0.tar.gz,将redis-3.0.0.tar.gz拷贝到/usr/local下
3. 解压源码:tar -zxvf redis-3.0.0.tar.gz
4. 进入解压后的目录进行编译:
cd /usr/local/redis-3.0.0
make
5. 安装到指定目录,如 /usr/local/redis
cd /usr/local/redis-3.0.0
make PREFIX=/usr/local/redis install
6. redis.conf,redis.conf是redis的配置文件,redis.conf在redis源码目录。拷贝配置文件到安装目录下,进入源码目录,里面有一份配置文件redis.conf,然后将其拷贝到安装路径下
cd /usr/local/redis
mkdir conf
cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis/bin
7. 安装目录bin下的文件列表
redis3.0新增的redis-sentinel是redis集群管理工具可实现高可用。
4. Redis的使用
1. 启动Redis
- 前端模式启动,进入Redis的安装目录,直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。如下图:
- 后端模式启动,修改redis.conf配置文件,修改 daemonize yes ,表示以守护线程模式运行Redis,即以后端模式启动,即使当前命令窗口关闭也会继续运行。使用该方法启动Redis
执行如下命令启动redis:
cd /usr/local/redis/bin(该命令用于进入Redis的安装目录中的bin目录下)
./redis-server redis.conf(通过指定配置文件所在的路径运行Redis)
Redis默认使用6379端口,也可更改redis.conf文件,修改端口号:
启动Redis后,可通过 ps aux|grep redis 命令来查看Redis是否运行
2. Redis客户端
启动Redis后,我们可以通过使用Redis的客户端来进行一些操作
- Redis客户端连接到Redis:进入Redis的安装目录中的bin目录下,运行指令 ./redis-cli -h ip地址 -p 端口号
- Redis客户端连接到Redis后,即可进行一些操作,比如像Redis中进行读写数据,
- 退出Redis客户端:输入 exit 指令即可
- 通过Redis客户端来关闭Redis:(可以通过指令kill -9 redis程序的进程号来直接关闭Redis,但无法保存存储在内存中的数据,不使用)
- 首先,确保启动时的配置文件中有相关配置:修改redis.conf中的配置,修改logfile与dir的值,指定路径,并在所写的路径下创建对应的文件与文件夹,注意,一定要设置这两个文件与文件夹的权限,保证Redis程序能够有权限对这两个文件和文件夹进行读写。logfile所指定的文件用于保存日志记录的文件,而dir指定的文件夹用于保存Redis关闭后持久化的数据的保存目录
- 使用修改过的Redis配置文件启动Redis,启动后通过Redis客户端连接到启动的Redis,使用shutdwn命令直接关闭Redis
- 首先,确保启动时的配置文件中有相关配置:修改redis.conf中的配置,修改logfile与dir的值,指定路径,并在所写的路径下创建对应的文件与文件夹,注意,一定要设置这两个文件与文件夹的权限,保证Redis程序能够有权限对这两个文件和文件夹进行读写。logfile所指定的文件用于保存日志记录的文件,而dir指定的文件夹用于保存Redis关闭后持久化的数据的保存目录
3. Redis中部分通用指令(API)的使用
首先需要通过Redis客户端连接到Redis,然后通过客户端来执行这些指令
-
keys [pattern]:用于遍历所有的key,pattern 代表类似于正则表达式,* 表示任意长度的任意字符,?表示任意一个字符,
但是,keys命令在实际开发很少用到,其时间复杂度为O(n)
-
del key [key1 ...]:删除指定的所有key以及其value数据,返回成功删除key的数量,其时间复杂度为O(1)
-
dbsize:计算出key的总数量,该命令较为常用,可以进行一个快速的对Redis内的数据项进行计数,其时间复杂度为O(1)
-
exists key:检查某个key是否存在,返回1代表存在,如果返回0代表不存在,其时间复杂度为O(1)
- expire key seconds:设置某个key对应的数据项在seconds秒之后过期,也就是会被自动删除,其时间复杂度为O(1)
- ttl key:查询key对应的数据项剩余的过期时间,大于等于0表示还未过期,如果为-1表示key没有设置过期时间,小于-1表示已经过期了,其时间复杂度为O(1)
- persist key:取消key对应的数据项的过期时间,其时间复杂度为O(1)
- type key:查询key所对应的value数据的类型,有string,list,set,zset,hash或者none(表示不存在的key),其时间复杂度为O(1)