1. 什么是 Redis
Redis 是用 C 语言开发的一个开源的高性能键值对 (key-value) 数据库. 它通过提供多种键值数据类型来适应不同场景下的存储需求, 目前为止 Redis 支持的键值数据类型如下字符串, 列表(lists), 集合(sets), 有序集合(sorts sets), 哈希表(hashs)
2.Redis 的应用场景
缓存(数据查询, 短连接, 新闻内容, 商品内容等等).(最多使用)
分布式集群架构中的 session 分离.
聊天室的在线好友列表.
任务队列.(秒杀, 抢购, 12306 等等)
应用排行榜.
网站访问统计.
数据过期处理(可以精确到毫秒)
3.Redis 的安装
下面介绍在 CentOS 环境下, Redis 的安装与部署, Redis 从 3.0 版本以后增加了集群功能.
步骤如下:
由于 Redis 是用 C 语言编写, 所以编译时需要 gcc,
yum install gcc-c++
通过官网下载 地址: http://download.redis.io/releases/redis-5.0.0.tar.gz
或 使用 Linux wget 命令: wget http://download.redis.io/releases/redis-5.0.0.tar.gz
把源码包上传到 Linux 服务器, 在上传的目录下进行解压
tar -zxvf Redis-5.0.0.tar.gz
进入解压后的目录进行编译 make, 指定目录安装 make install 如 /usr/local/Redis
- cd /Redis-5.0.0/
- make (这里进 Redis-5.0.0 / 目录下直接 make 编译就好了)
- make install PREFIX=/usr/local/Redis (指定编译路径)
进入安装目录 bin 下
cd /usr/local/Redis/bin
此时的目录结构是这样的
•Redis-benchmark Redis 性能测试工具
•Redis-check-aof AOF 文件修复工具
•Redis-check-rdb RDB 文件修复工具
•Redis-cli Redis 命令行客户端
•Redis.conf Redis 配置文件
•Redis-sentinal Redis 集群管理工具
•Redis-server Redis 服务进程
4. 启动 Redis
1. 前端模式启动
/usr/local/Redis/bin/Redis-server
或 cd /usr/local/Redis/bin 运行 ./Redis-server
前端模式启动的缺点是 SSH 命令窗口关闭则 Redis-server 程序结束, 故不推荐使用此方法.
2. 后端模式启动
1)从 Redis 的源码目录中复制 Redis.conf 到 Redis 的安装目录 bin 下.
cp Redis.conf /usr/local/Redis/bin
2)修改配置文件 (是否后台启动)
VIM /usr/local/Redis/bin/Redis.conf
找到 daemonize 按 i 进入编辑模式 把 no 改为 yes
按 ESC + :wq 保存退出
执行如下命令启动 Redis:
- cd /usr/local/Redis/bin
- ./Redis-server ./Redis.conf
3. 查看是否启动成功
ps aux|grep Redis
Redis 默认端口为 6379, 可更改 Redis.conf 文件, 修改端口号
5. 关闭 Redis
强行终止 Redis 进程可能会导致 Redis 持久化数据丢失.
正确停止 Redis 的方式应该是向 Redis 发送 SHUTDOWN 命令,
命令为:
- cd /usr/local/Redis
- ./bin/Redis-cli shutdown
强行终止 Redis
pkill Redis-server
6. 让 Redis 开机自启
方法一:
1) VIM /etc/init.d/Redis 编写脚本 (输入下面的代码)
- # chkconfig: 2345 10 90
- # description: Start and Stop Redis
- PATH=/usr/local/bin:/sbin:/usr/bin:/bin
- REDISPORT=6379 #实际环境而定
- EXEC=/usr/local/Redis/bin/Redis-server #实际环境而定
- REDIS_CLI=/usr/local/Redis/bin/Redis-cli #实际环境而定
- PIDFILE=/var/run/Redis.pid
- CONF="/usr/local/redis/bin/redis.conf" #实际环境而定
- case "$1" in
- start)
- if [ -f $PIDFILE ]
- then
- echo "$PIDFILE exists, process is already running or crashed."
- else
- echo "Starting Redis server..."
- $EXEC $CONF
- fi
- if [ "$?"="0" ]
- then
- echo "Redis is running..."
- fi
- ;;
- stop)
- if [ ! -f $PIDFILE ]
- then
- echo "$PIDFILE exists, process is not running."
- else
- PID=$(cat $PIDFILE)
- echo "Stopping..."
- $REDIS_CLI -p $REDISPORT SHUTDOWN
- while [ -x $PIDFILE ]
- do
- echo "Waiting for Redis to shutdown..."
- sleep 1
- done
- echo "Redis stopped"
- fi
- ;;
- restart|force-reload)
- ${
- 0
- } stop
- ${
- 0
- } start
- ;;
- *)
- echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}">&2
- exit 1
- esac
2) 配置开机启动
- chmod 755 /etc/init.d/Redis #设置文件 Redis 的权限, 让 Linux 可以执行
- chkconfig Redis on #开启服务自启动
- chkconfig --list #查看所有注册的脚本文件
- service Redis start #启动
- service Redis stop #关闭 Redis
3) 检测是否成功
- reboot #重启 -- 如果是 centos6.5 学过来的, init 0 与 init 6 一样在 centos7 适用
- ps aux|grep Redis #查看 Redis 进程是否存在
方法二:
CentOS 7 以上是用 Systemd 进行系统初始化的, Systemd 是 Linux 系统中最新的初始化系统(init), 它主要的设计目标是克服 sysvinit 固有的缺点, 提高系统的启动速度.
Systemd 服务文件以. service 结尾, 比如现在要建立 Redis 为开机启动, 如果用 yum install 命令安装的, yum 命令会自动创建 Redis.service 文件, 直接用命令 systemcel enable Redis.service 设置开机启动即可
1. 在系统服务目录里创建 Redis.service 文件
VIM /etc/systemd/system/Redis.service
写入以下内容:
- [Unit]
- Description=Redis-server
- After=network.target
- [Service]
- Type=forking
- ExecStart=/usr/local/Redis/bin/Redis-server /usr/local/Redis/bin/Redis.conf
- PrivateTmp=true
- [Install]
- WantedBy=multi-user.target
注意: ExecStart 配置成自己的路径
配置描述:
Description: 描述服务
After: 描述服务类别
[Service]服务运行参数的设置
Type=forking 是后台运行的形式
ExecStart 为服务的具体运行命令
ExecReload 为重启命令
ExecStop 为停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
注意:[Service]的启动, 重启, 停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置, 可设置为多用户, 即系统运行级别为 3
2. 测试并加入开机自启
先关闭 Redis-server
systemctl stop Redis.service
开启 Redis-server
systemctl start Redis.service #如果服务是开启状态, 使用此命令会启动失败.
3. 开启成功, 将服务加入开机自启
- systemctl enable Redis.service #注意后面不能跟空格
- 4. reboot #重启
5. 查看服务运行状态: systemctl status Redis.service
6. 全部命令
- systemctl start Redis.service #启动 Redis 服务
- systemctl enable Redis.service #设置开机自启动
- systemctl disable Redis.service #停止开机自启动
- systemctl status Redis.service #查看服务当前状态
- systemctl restart Redis.service #重新启动服务
- systemctl list-units --type=service #查看所有已启动的服务
7. 测试代码
引入 jar 包:
代码:
- public class JedisTest {
- @Test
- public void testJedisSingle() {
- // 创建一个 jedis 的对象.
- Jedis jedis = new Jedis("172.20.10.7", 6379);
- // 调用 jedis 对象的方法, 方法名称和 Redis 的命令一致.
- jedis.set("key1", "jedis test");
- String str = jedis.get("key1");
- System.out.println(str);
- // 关闭 jedis.
- jedis.close();
- }
- /**
- * 使用连接池
- */
- @Test
- public void testJedisPool() {
- // 创建 jedis 连接池
- JedisPool pool = new JedisPool("172.20.10.7", 6379);
- // 从连接池中获得 Jedis 对象
- Jedis jedis = pool.getResource();
- String str = jedis.get("key1");
- System.out.println(str);
- // 关闭 jedis 对象
- jedis.close();
- pool.close();
- }
- }
至此 Redis 安装配置完毕.
good luck !
来源: http://www.linuxidc.com/Linux/2019-06/159178.htm