Redis
Redis 官网:https://redis.io/
源码地址:https://github.com/redis/redis
Redis 在线测试:http://try.redis.io/
Redis 命令参考:http://doc.redisfans.com/
REmote DIctionary Server(远程字典服务器)
是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行 并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
- Redis支持数据的备份,即master-slave模式的数据备份
能干嘛
- 内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
- 取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
- 模拟类似于HttpSession这种需要设定过期时间的功能
- 发布、订阅消息系统
- 定时器、计数器
怎么玩
- 数据类型、基本操作和配置
- 持久化和复制,RDB/AOF
- 事务的控制
- 复制(主从关系)
安装Redis
一、安装gcc依赖
yum install -y gcc
二、下载并解压安装包
wget http://download.redis.io/releases/redis-6.2.1.tar.gz
tar -zxvf redis-6.2.1.tar.gz
三、cd切换到redis解压目录下,执行编译
cd redis-6.2.1
make
四、安装并指定安装目录
[root@localhost redis-6.2.1]# make install PREFIX=/usr/local/redis
#复制一份配置文件到自己文件夹
[root@VM-4-15-centos ~]# mkdir myredis
[root@VM-4-15-centos ~]# cd redis-6.2.1
[root@VM-4-15-centos redis-6.2.1]# cp redis.conf /root/myredis/
启动redis的三种方式
1.直接启动redis
在redis src目录下
[root@VM-4-15-centos redis-6.2.1]# cd src
[root@VM-4-15-centos src]# ./redis-server
16469:C 08 Aug 2021 00:33:43.312 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
16469:C 08 Aug 2021 00:33:43.312 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=16469, just started
16469:C 08 Aug 2021 00:33:43.312 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
16469:M 08 Aug 2021 00:33:43.313 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.2.1 (00000000/0) 64 bit
.-`` .-```. ```/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 16469
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
16469:M 08 Aug 2021 00:33:43.313 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
16469:M 08 Aug 2021 00:33:43.313 # Server initialized
16469:M 08 Aug 2021 00:33:43.313 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
16469:M 08 Aug 2021 00:33:43.313 * Ready to accept connections
启动成功
2.修改配置文件 后台启动
在有redis.conf的目录下
[root@VM-4-15-centos myredis]# vi redis.conf
把 daemonize no 改为 daemonize yes
然后指定redis.conf文件启动
./redis-server 【redis配置文件所在路径】
[root@VM-4-15-centos src]# ./redis-server /root/myredis/redis.conf
关闭redis进程
[root@VM-4-15-centos src]# ps -aux | grep redis
root 17297 0.2 0.5 195544 10068 ? Ssl 00:38 0:00 ./redis-server 127.0.0.1:6379
root 17494 0.0 0.0 112812 972 pts/1 R+ 00:39 0:00 grep --color=auto redis
使用kill命令杀死进程
[root@VM-4-15-centos src]# kill 17297
3.开机自启
添加开机启动服务
[root@VM-4-15-centos src]# vi /etc/systemd/system/redis.service
复制内容
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /root/myredis/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
ExecStart=/usr/local/redis/bin/redis-server 【redis配置文件所在路径】
测试 redis
[root@VM-4-15-centos src]# redis
127.0.0.1:6379> ping
PONG
表示这是一个正常的联通状态
关闭redis进程
[root@VM-4-15-centos src]# ps -aux | grep redis
root 17297 0.2 0.5 195544 10068 ? Ssl 00:38 0:00 ./redis-server 127.0.0.1:6379
root 17494 0.0 0.0 112812 972 pts/1 R+ 00:39 0:00 grep --color=auto redis
使用kill命令杀死进程
[root@VM-4-15-centos src]# kill 17297
Redis关闭
单实例关闭
redis-cli shutdown
在终端关机
shutdown
在终端退出
exit
Redis启动后的杂项知识
1.测试redis在机器运行的效能
在redis安装目录下输入
[root@VM-4-15-centos bin]# redis-benchmark
2.默认16个数据库
类似数组下表从零开始,初始默认使用零号库,可在配置文件配置
select
用于切换数据库
127.0.0.1:6379> select 15
OK
127.0.0.1:6379[15]>
dbsize
查看当前数据库的key的数量
127.0.0.1:6379> dbsize
(integer) 4
keys *
用于查看当前库的key
127.0.0.1:6379> keys *
1) "k1"
2) "myhash"
3) "key:__rand_int__"
4) "counter:__rand_int__"
keys k?相当于模糊查询
127.0.0.1:6379> keys k?
1) "k1"
flushdb
:清空当前库flushall
:通杀全部库
统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上
Redis索引都是从零开始
为什么默认端口是6379:MDRZ
Vim命令
按 ESC,左下角就可以进行输入
:w
保存但不退出
:wq
保存并退出
:q
退出
:q!
强制退出,不保存
:e!
放弃所有修改,从上次保存文件开始再编辑命令历史
服务操作命令
systemctl start redis.service #启动redis服务
systemctl stop redis.service #停止redis服务
systemctl restart redis.service #重新启动服务
systemctl status redis.service #查看服务当前状态
systemctl enable redis.service #设置开机自启动
systemctl disable redis.service #停止开机自启动