Skip to content

Redis快速上手

Redis是一款NOSQL(非关系型)数据库,优点如下:

  • 开源
  • 键值缓存和存储
    • 内存中
    • 持久化
    • 分布式
    • HA 主从数据库
  • 多种数据结构支持
    • String
    • List
    • Hash
    • Set
    • Stored Set
    • Bitmaps
    • Hyperloglogs
  • 性能强悍,功能多
  • 分布式支持 遵循BSD协议自由使用,可以在BSD的代码上二次开发后商业销售,很受欢迎。

背景,关系型数据库在超大规模和高并发的SNS类型和web2.0力不从心,有很多问题。

NoSQL查询速度快,适用于大数据的环境。

Redis的缺点

  • 持久化的问题
    • 定时存储代价大
    • 只保存变化,恢复慢
  • 内存消耗大

企业应用场景

  • 数据库
  • 缓存
  • 热点数据(经常查询,但是不经常修改的数据)
  • 消息中间件

直接上手安装

使用阿里云的ECS直接操作

下载并安装

bash
# 下载
cd /usr/local/src && wget http://download.redis.io/releases/redis-5.0.7.tar.gz
# 解压
tar xvf redis-5.0.7.tar.gz
# 移动目录
mv redis-5.0.7 /usr/local/redis
# 转移到新目录
cd ../redis
# 编译并且安装
make && make install
# 下载
cd /usr/local/src && wget http://download.redis.io/releases/redis-5.0.7.tar.gz
# 解压
tar xvf redis-5.0.7.tar.gz
# 移动目录
mv redis-5.0.7 /usr/local/redis
# 转移到新目录
cd ../redis
# 编译并且安装
make && make install

如果编译报错就

设置编译环境

bash
# 解决编译错误
sudo yum -y install gcc gcc-c++ libstdc++-devel 
make MALLOC=libc
# 解决编译错误
sudo yum -y install gcc gcc-c++ libstdc++-devel 
make MALLOC=libc

验证安装

bash
cd /usr/local/bin
ls
cd /usr/local/bin
ls

截图

其中redis-server是服务端,redis-cli是客户端

配置文件复制到/etc/目录下

bash
mkdir /etc/redis
cp /usr/local/redis/redis.conf /etc/redis/
vi /etc/redis/redis.conf
mkdir /etc/redis
cp /usr/local/redis/redis.conf /etc/redis/
vi /etc/redis/redis.conf

接下来修改配置文件

bash
vi /etc/redis/redis.conf
vi /etc/redis/redis.conf

比较重要的参数

字段解释
daemonize是否用守护进程运行进行,默认值为no
pidfile当以守护进程运行时将会把pid写入pid文件
port端口号
bind绑定的主机ip,默认 127.0.0.1
timeout客户端闲置多长时间之后关闭连接,为0就是关闭该功能
loglevel日志等级
logfile日志记录默认为标准输出,守护进程如果为默认则日志就会丢弃
databases数据库的数量 使用SELECT dbid 连接指定的id
save在一段时间内有一定数量的更新就将数据写入数据文件 save second changes
rdbccompression是否将数据文件压缩
dbfilename数据文件
dir数据库位置
slaveof设置master服务的ip和端口
masterauthmaster设置密码的时候连接密码
requirepass数据库连接密码
maxclients最大客户端连接数
maxmemory最大内存数量
appendonly日志记录是否在每次更新的时候执行
appendfilename更新日志文件名appendonly.aof
appenfsync日志更新条件 no 表示等待操作系统 always 表示每次写入磁盘 everysec 每秒同步一次
vm-emabled是否启用虚拟内存机制
vm-swap-file虚拟内存文件路径
vm-max—memory将数据(values)大于vm-max-memory存储到虚拟内存当数值为0所有数据都存储在磁盘上
vm-page-size虚拟内存分页大小,也就是最小存储单元,根据对象的大小进行设置,小文件最好是32bytes
vm-pagesswap文件中page的数量,每8个pages消耗1byte
vm-max-threadsswap文件访问线程数
glueoutputbuf向客户端应答的时候是否将小包合并为一个发送,默认开启
hash-max-zipmap-entries内存优化参数,当某个值的数量超过一个数量就转化为正常的的hash编码,用于内存优化,小于这个设定值就会使用短的编码
hash-max-zipmap-values同上
hash-max-ziplist-value同上
zset-max-ziplist-entries同上
zset-max-ziplist-value同上
set-max-intset-entries同上
activerehashing是否激活重置hash
include包含其他配置文件

修改几个字段就行

# 守护启动
daemonize yes
# 注释掉来允许其他机器来访问Redis服务
# bind 127.0.0.1
# requirepass 设置数据库密码
requirepass password123
# 守护启动
daemonize yes
# 注释掉来允许其他机器来访问Redis服务
# bind 127.0.0.1
# requirepass 设置数据库密码
requirepass password123

注意事项:密码复杂一点,因为Redis每秒可以进行15w次密码尝试

Redis启动

二进制文件,参数是配置文件路径

bash
/usr/local/bin/redis-server /etc/redis/redis.conf
/usr/local/bin/redis-server /etc/redis/redis.conf

使用Docker安装

bash
#安装Docker并启动
yum install docker
systemctl start docker
#拉取redis镜像
docker pull redis
#安装Docker并启动
yum install docker
systemctl start docker
#拉取redis镜像
docker pull redis

修改之前的配置文件 注释掉daemonize yes 还有bind 127.0.0.1

运行容器

bash
docker run -d --name myredis -p 6379:6379 -v /var/lib/redis:/data  -v /etc/redis/redis.conf:/etc/redis/redis.conf redis
docker run -d --name myredis -p 6379:6379 -v /var/lib/redis:/data  -v /etc/redis/redis.conf:/etc/redis/redis.conf redis

获取桌面管理软件

RDM

下载地址 (来自网友编译版本)

记得更改名字把.zip去掉,这是因为cdn的限制 jsdelivrCDN

可以使用软件直接连接redis服务端,要注意端口的开放

连接上之后软件主界面如图