一、简介
1.1 Redis是什么
Redis是一个开源的,使用ANSI C 编写,高性能的Key-Value的NoSQL数据库。
1.2 Redis特点
(1)基于内存
(2)可持久化数据
(3)具有丰富的数据结构类型,适应非关系型数据的存储需求
(4)支持绝大多数主流开发语言,如C、C++、Java、Python、R、JavaScript等。
(5)支持集群模式,高效、稳定。
1.3 数据模型(重点)
(1)键值对形式。
(2)Redis的数据结构类型,指的就是Redis值的结构类型。
1.4 Redis作用
(1)本质是数据库,能存储数据。
Redis能灵活处理非关系型数据的读、写问题,是对MySQL等关系型数据库的补充。
新浪微博就是使用Redis集群做数据库。
(2)缓存数据。
所谓缓存,就是将数据加载到内存中后直接使用,而不是每次都通过IO流从磁盘上读取。好处:读写效率高。
而Redis则是将数据直接存储在内存中,只有当内存空间不足时,将部分数据持久化到磁盘上。
二、安装
1.1 说明
Redis官方只提供了源码,并没有提供经过编译之后的安装包。
因此,安装Redis,要先编译、后安装。(即源码安装方式)
1.2 redis安装步骤
# 安装步骤
cd /usr/local/src
wget
tar -zxv -f redis-5.0.4.tar.gz
cd /usr/local/src/redis-5.0.4/
make MALLOC=libc (或者直接make,不用./configure)
make install (安装到指定目录:make PREFIX=http://www.likecs.com/usr/local/redis install,不指定的话默认安装到/usr/local/bin目录下,也可以执行该步骤,也就是安装)
# 不安装的话命令执行文件路径是:/usr/local/src/redis-5.0.4/src
# 配置文件:/usr/local/src/redis-5.0.4/redis.conf
# 优化配置,使用root账号操作
# vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 2048
# sysctl -p
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
# chmod +x /etc/rc.d/rc.local
# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
# 启动
[sandu@bogon ~]# ./src/redis-server ./redis.conf
1270:C 02 Aug 2019 16:27:19.274 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1270:C 02 Aug 2019 16:27:19.275 # Redis version=5.0.4, bits=64, commit=00000000, modified=0, pid=1270, just started
1270:C 02 Aug 2019 16:27:19.275 # Configuration loaded
_._
_.-``__ \'\'-._
_.-`` `. `_. \'\'-._
Redis 5.0.4 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ \'\'-._
( \'
,
.-` | `, )
Running in standalone mode
|`-._`-...-` __...-.``-._|\'` _.-\'|
Port: 6379
| `-._ `._ /
_.-\' |
PID: 1270
`-._ `-._ `-./ _.-\' _.-\'
|`-._`-._ `-.__.-\' _.-\'_.-\'|
| `-._`-._
_.-\'_.-\' |
`-._ `-._`-.__.-\'_.-\' _.-\'
|`-._`-._ `-.__.-\' _.-\'_.-\'|
| `-._`-._
_.-\'_.-\' |
`-._ `-._`-.__.-\'_.-\' _.-\'
`-._ `-.__.-\' _.-\'
`-._
_.-\'
`-.__.-\'
1270:M 02 Aug 2019 16:27:19.277 # Server initialized
1270:M 02 Aug 2019 16:27:19.277 * Ready to accept connections
# 使用自带的客户端连接,默认没有密码直接连接
[sandu@bogon ~]# ./src/redis-cli
127.0.0.1:6379> ping # 检测redis服务是否启动
PONG
127.0.0.1:6379> set a 1111
OK
127.0.0.1:6379> get a
"1111"
127.0.0.1:6379> quit # 退出
# 密码连接
# redis-cli -h host -p port -a password
[sandu@bogon ~]# ./src/redis-cli
127.0.0.1:6379> auth foobar2000
OK
127.0.0.1:6379> set b 222222
OK
127.0.0.1:6379> get b
"222222"
127.0.0.1:6379> exit
1.3 redis.conf常用配置说明
bind:允许访问该redis的主机
protected-mode:保护模式,默认开启。若设置外部网络连接redis服务,设置方式如下:
1、关闭protected-mode模式,此时外部网络可以直接访问
2、开启protected-mode保护模式,需配置bind ip或者设置访问密码,或者bind ip和密码都设置
requirepass:设置密码
databases:Redis默认有16个数据库,寻址角标从0开始。默认连接db0。客户端使用select命令,切换数据库
port :指定redis的服务端口,默认6379.
daemonize:Redis默认关闭后台进程模式,改成yes,redis服务在后台启动。
loglevel :日志等级
logfile:Redis日志输出目录,默认不输出日志到文件。
dbfilename:指定数据持久化的文件名
dir :指定数据持久化的文件存放目录,也是集群node.con文件存放目录
cluster-enabled:是否启用集群
cluster-config-file:集群文件
1.4 redis启动方式
直接启动
进入redis根目录,执行命令,加上‘&’号使redis以后台程序方式运行
./src/redis-server &
通过指定配置文件启动
可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf
./src/redis-server /etc/redis/6379.conf
进入redis根目录,输入命令,如果更改了端口,使用redis-cli客户端连接时,也需要指定端口,例如:
redis-cli -p 6380
# redis-cli -h host -p port -a password
使用redis启动脚本设置开机自启动,有问题,只能启动和停止,不能查看状态,也不能重载,还有就是关闭的话貌似关不掉,不予考虑该脚本