1. redis简介
redis(Remote Dictionary Server)是一个开源的由Salvatore Sanfilippo使用ANSI C语言编写的基于key-value数据存储服务器。
其值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型,所以通常被称为数据结构服务器。
redis属于NoSQL数据库,NoSQL数据库叫非关系型数据库。
1.1 redis特点
- redis足够简单和稳定
- 支持丰富的数据结构
- 内存存储读写性能优秀
- 提供持久化的支持
- 支持部分事务操作
2. redis安装
2.1 redis下载安装
#下载
[root@CentOS7 ~]# wget http://download.redis.io/releases/redis-5.0.5.tar.gz
#解压
[root@CentOS7 ~]# tar zxvf redis-5.0.5.tar.gz -C /usr/local/
[root@CentOS7 ~]# cd /usr/local/redis-5.0.5/
#编译
[root@CentOS7 redis-5.0.5]# make -j 4
#将src下的可执行文件复制到/usr/local/bin目录下(可不执行)
[root@CentOS7 redis-5.0.5]# make install
2.2 redis启动与关闭
1. 加&设置为后台启动redis服务
#后台启动redis服务
[root@CentOS7 redis-5.0.5]# cd src/
[root@CentOS7 src]# ./redis-server &
#后台启动并输出日志到nohup.out文件
[root@CentOS7 src]# nohup /usr/local/redis-5.0.5/src/redis-server &
[root@CentOS7 src]# ll -h nohup.out
-rw-------. 1 root root 3.2K 9月 5 20:23 nohup.out
2. 修改redis.conf配置文件,将daemonize no改为daemonize yes,启用后端模式。
[root@CentOS7 src]# sed -i 's/daemonize no/daemonize yes/' /usr/local/redis-5.0.5/redis.conf
[root@CentOS7 src]# ./redis-server ../redis.conf
26084:C 06 Sep 2019 00:05:27.371 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
26084:C 06 Sep 2019 00:05:27.371 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=26084, just started
26084:C 06 Sep 2019 00:05:27.371 # Configuration loaded
3. redis服务的关闭
#正常关闭,数据保存
[root@CentOS7 src]# ./redis-cli shutdown
#硬性关闭,可能造成数据丢失($括号中的数据为获取redis服务端的pid)
[root@CentOS7 src]# kill -9 $(ps -ef | grep redis | grep -v grep | awk '{print $2}')
3. redis客户端
3.1 redis命令行客户端
redis-cli(Redis Command Line Interface)是Redis自带的基于命令行的Redis客户端,用于与服务器交互,可以使用该客户端来执行Redis的各种命令。
直接连接Redis(默认IP127.0.0.1,端口6379)
[root@CentOS7 src]# ./redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
指定IP和端口连接redis
[root@CentOS7 src]# ./redis-cli -h 127.0.0.1 -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
3.2 redis远程客户端
1.Redis Desktop Manager
注意:连接Redis需要修改Redis主目录下的redis.conf配置文件:bind ip绑定IP注释掉;protected-mode yes保护模式改为no;
[root@CentOS7 redis-5.0.5]# vim redis.conf
69 #bind 127.0.0.1
88 protected-mode no
2.phpRedisAdmin
web控制台,需要本地安装php运行环境。
3.3 redis编程客户端
redis以键值对的方式存储数据在服务器上,有人编写了一套程序,专门去连接redis并读取其中的键值对内容,这套程序就像驱动程序一样,我们使用它提供的API就能访问服务器上的redis并对它进行各种操作。
redis的java编程客户端
1.Jedis:redis的java编程客户端,redis官方首选推荐使用redis,jedis是一个很小但很健全的java客户端。
2.Lettuce:是一个可伸缩线程安全的java客户端。多个线程可以共享同一个redis连接。它利用优秀netty NIO框架来高效地管理多个连接。
4. redis入门
redis默认为16个数据库(在redis.conf文件中可配置)。
redis默认使用0号库。
4.1 redis常用命令
[root@CentOS7 src]# ./redis-cli
#输入ping,redis返回PONG,表示redis服务运行正常
127.0.0.1:6379> ping
PONG
切换库命令:select db
删除所有库的数据:flushall
删除当前库的数据:flushdb
获取redis的所有配置值:config get *
退出当前客户端:exit/quit
查看当前数据库中key的数目:dbsize
查看redis服务器的统计信息:info
5. redis安全
5.1 设置密码
设置redis密码,在redis.conf文件配置requirepass 123456.
注意:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒种进行150K次的密码尝试,这意味着需要指定非常强大的密码来防止暴力破解。
客户端连接则需要密码:auth 123456或者redis-cli -h 127.0.0.1 -p 6379 -a 123456
[root@CentOS7 src]# sed -i 's/# requirepass foobared/12345/' ../redis.conf
5.2 绑定IP
把#bind 127.0.0.1前面的注释去掉,然后把127.0.0.1改成允许访问的redis服务器的IP,表示只允许该IP访问
[root@CentOS7 src]# sed -i 's/# bind 127.0.0.1/bind 127.0.0.1/' ../redis.conf
5.3 命令禁止或重命名
在redis.conf文件种进行命令禁止或重命名配置
rename-command flushall b840fc02d524045429941cc15f59e41cb7be6c52 #重命令fulshall命令。需保证appendonly.aof文件没有flushall命令,否则服务器无法启动
rename-command flushall #禁用flushall命令
rename-command flushdb #禁用flushdb命令
rename-command config b840fc02d524045429941cc15f59e41cb7be6c52 #重命名config命名
rename-command config #禁用config命令
5.4 修改默认端口
redis默认端口号为6379,可修改配置文件更改其默认端口号。
[root@CentOS7 src]# sed -i 's/port 6379/port 8888/' ../redis.conf