Redis 是什么
Redis
是一种基于键值对的 NoSQL
数据库,与很多键值对数据库不同,redis
中的值可以有string,hash,list,set,zset,geo
等多种数据结构和算法组成.
Redis
会将所有的数据都放在内存中,所以他的读写性能非常惊人.Redis 还可以将内存中的数据利用快照和日志的形式保存到硬盘上
Redis
提供了键过期,发布订阅,事务,流水线等附加功能.
Redis 重要特性
- 1.速度快
- Redis 所有的数据都存放在内存中
- Redis 使用 C 语言实现
- Redis 使用单线程架构
- 2.基于键值对的数据结构服务器
- 5 中数据结构:字符串,哈希,列表,集合,有序集合
- 3.丰富的功能
- 提供了键过期功能,可以实现缓存
- 提供了发布订阅功能,可以实现消息系统
- 提供了 pipeline 功能,客户端可以将一批命令一次性传到 Redis,减少了网络开销
- 4.简单稳定
- 源码很少,3.0 版本以后 5 万行左右.
- 使用单线程模型法,是的 Redis 服务端处理模型变得简单.
- 不依赖操作系统的中的类库
- 5.客户端语言多
- java,PHP,python,C,C++,Nodejs 等
- 6.持久化
- 7.主从复制
- 8.高可用和分布式
Redis 应用场景
- 1.缓存-键过期时间
- 缓存 session 会话
- 缓存用户信息,找不到再去 mysql 查,查到然后回写到 redis
- 2.排行榜-列表&有序集合
- 3.计数器应用-天然支持计数器
- 4.社交网络-集合
- 5.消息队列系统-发布订阅
目录规划
1 2 3 4 5 6 7 8 9
| mkdir -p /server/{tools,scripts} && cd /server/tools wget http://download.redis.io/releases/redis-5.0.5.tar.gz
/application/redis_cluster/redis_{PORT}/{conf,logs,pid}
/data/redis_cluster/redis_{PORT}/
/server/scripts/redis_shell.sh
|
解析主机
1 2 3 4 5
| cat >> /etc/hosts <<EOF 10.0.0.51 db01 10.0.0.52 db02 10.0.0.53 db03 EOF
|
配置互信
1 2 3
| [root@db01 ~] [root@db01 ~] [root@db01 ~]
|
安装redis
1 2 3 4 5 6 7 8 9 10 11 12 13
| yum -y install gcc automake autoconf libtool make [root@db01 ~] [root@db01 ~] [root@db01 ~] 总用量 0 lrwxrwxrwx 1 root root 40 5月 10 15:28 redis -> /application/redis_cluster/redis-5.0.5/ drwxrwxr-x 6 root root 309 6月 13 2018 redis-5.0.5 drwxr-xr-x 5 root root 41 5月 10 15:12 redis_6379 [root@db01 ~]
//或者利用官方提供的脚本进行交互式安装
/application/redis_cluster/redis/utils/install_server.sh
|
添加环境变量
1 2 3 4 5 6 7
| [root@db01 ~] export PATH=/application/redis_cluster/redis/src:$PATH EOF [root@db01 ~]
[root@db01 ~] Redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=80d2ef2db5b4103a
|
可执行文件
1 2 3 4 5 6
| redis-benchmark redis-check-rdb redis-check-aof redis-cli redis-sentinel redis-server
|
配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| cat > /application/redis_cluster/redis_6379/conf/redis_6379.conf <<'EOF'
daemonize yes
bind 10.0.0.51 127.0.0.1
port 6379
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
databases 16
dbfilename redis_6379.rdb
dir /data/redis_cluster/redis_6379 EOF
|
启动连接redis
1 2 3 4 5 6
| [root@db01 ~] [root@db01 ~] root 4414 1 0 16:14 ? 00:00:00 redis-server 10.0.0.51:6379 [root@db01 ~] db01:6379> db01:6379> SHUTDOWN //关闭
|
systemctl管理Redis启动、停止、开机启动
创建服务
用service来管理服务的时候,是在/etc/init.d/目录中创建一个脚本文件,来管理服务的启动和停止,在systemctl中,也类似,文件目录有所不同,在/lib/systemd/system/
目录下创建一个脚本文件redis6379.service
,里面的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12
| cat >/lib/systemd/system/redis6379.service<<EOF [Unit] Description=Redis After=network.target
[Service] ExecStart=/application/redis_cluster/redis/src/redis-server /application/redis_cluster/redis_6379/conf/redis_6379.conf --daemonize no ExecStop=/application/redis_cluster/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown
[Install] WantedBy=multi-user.target EOF
|
- [Unit] 表示这是基础信息
- Description 是描述
- After 是在那个服务后面启动,一般是网络服务启动后启动
- [Service] 表示这里是服务信息
- ExecStart 是启动服务的命令
- ExecStop 是停止服务的指令
- [Install] 表示这是是安装相关信息
- WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
创建软链接
创建软链接是为了下一步系统初始化时自动启动服务
ln -s /lib/systemd/system/redis6379.service /etc/systemd/system/multi-user.target.wants/redis6379.service
刷新配置
刚刚配置的服务需要让systemctl能识别,就必须刷新配置
systemctl daemon-reload
测试
1 2 3 4
| [root@db01 ~] [root@db01 ~] [root@db01 ~] Removed symlink /etc/systemd/system/multi-user.target.wants/redis6379.service.
|