欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Redis介绍和安装

程序员文章站 2022-03-08 22:29:52
一. Redis的介绍 Redis 是一个Key-Value存储的系统;它支持存储的value类型有string(字符串),list(列表),set(集合),zset(有序集合);为了保证效率;数据都缓存在内存中;它也周期性将内存数据写入磁盘或者把读写操作写入记录文件。Redis使用单线程模型;还有 ......

一. redis的介绍

  redis 是一个key-value存储的系统;它支持存储的value类型有string(字符串),list(列表),set(集合),zset(有序集合);为了保证效率;数据都缓存在内存中;它也周期性将内存数据写入磁盘或者把读写操作写入记录文件。redis使用单线程模型;还有其他特性:例如健过期,发布/订阅,事务功能等等。
  相比其他个key-value存储的系统;有这些优势:

  1. 数据的持久性;redis会周期性将内存数据写入磁盘和将读写操作写入记录文件。保证数据库在重启之后数据不丢失
  2. 支持master-slave模式;主从复制
  3. 支持存储value类型多样性;有list(列表),set(集合),zset(有序集合),bitmap等等。
  4. 在3.0版本正式提供了高可用分布式架构redis cluster集群;提供了高可用性,读写和容量的扩展。

二. redis的安装与部署

2.1 下载地址

  redis下载地址

2.2 安装

tar -zxvf redis-5.0.0.tar.gz
cd redis-5.0.0
make 
cd src
make install prefix=/usr/local/redis
mkdir -p /usr/local/redis/etc
mv ../redis.conf /usr/local/redis/etc

2.3 创建redis用户

  习惯了使用非root用户来管理数据库;前提我们需要创建redis用户和相关目录

useradd redis
mkdir -p /data/redis/{logs,conf,pid,data}
chown -r redis:redis /data/redis

  配置redis;在/data/redis/conf目录下创建redis-6379.conf文件;内容如下

###基本参数###
daemonize yes
pidfile /data/redis/pid/redis-6379.pid
port 6379
tcp-backlog 65535
bind 0.0.0.0
timeout 0
tcp-keepalive 0
loglevel notice
logfile /data/redis/logs/redis-6379.log
databases 16
lua-time-limit 5000
maxclients 10000
protected-mode yes
dir /data/redis/data/

###慢日志参数###
slowlog-log-slower-than 10000
slowlog-max-len 128

###内存参数###
#maxmemory 1g
#maxmemory-policy volatile-lru

###rdb持久化参数###
save 3600 1
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump-6379.rdb"

###aof持久化参数###
no-appendfsync-on-rewrite yes
appendonly yes
appendfilename "appendonly-6379.aof"
appendfsync no
auto-aof-rewrite-min-size 512mb
auto-aof-rewrite-percentage 100
aof-load-truncated yes
aof-rewrite-incremental-fsync yes

###客户端buffer参数### 
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

###其他参数###
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
latency-monitor-threshold 0
hz 10

###安全参数###
requirepass li0924
# masterauth 123456789
rename-command keys redis_keys
rename-command flushdb redis_flushdb
rename-command flushall redis_flushall

###复制参数(从库)###
###集群参数###

相关配置参数:

  • daemonize:如需要在后台运行,把该项的值改为yes
  • pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
  • bind:指定redis只接收来自该ip的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
  • port:监听端口,默认为6379
  • timeout:设置客户端连接时的超时时间,单位为秒
  • loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
  • logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
  • database:设置数据库的个数,默认使用的数据库是0
  • save:设置redis进行数据库镜像的频率
  • rdbcompression:在进行镜像备份时,是否进行压缩
  • dbfilename:镜像备份文件的文件名
  • dir:数据库镜像备份的文件放置的路径
  • slaveof:设置该数据库为其他数据库的从数据库
  • masterauth:当主数据库连接需要密码验证时,在这里设定
  • requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
  • maxclients:限制同时连接的客户端数量
  • maxmemory:设置redis能够使用的最大内存
  • appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
  • appendfsync:设置appendonly.aof文件进行同步的频率
  • vm_enabled:是否开启虚拟内存支持
  • vm_swap_file:设置虚拟内存的交换文件的路径
  • vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
  • vm_page_size:设置虚拟内存页的大小
  • vm_pages:设置交换文件的总的page数量
  • vm_max_thrrads:设置vm io同时使用的线程数量
  • stop-writes-on-bgsave-error 强制关闭redis快照导致不能持久化;默认为yes

  配置用户环境变量

export redis_home=/usr/local/redis
export path=$path:$redis_home/bin

alias rds_start="redis-server /data/redis/conf/redis-6379.conf"
alias rds_stop="redis-cli -a li0924 shutdown &> /dev/null"
alias rsql="redis-cli"

2.4 启动redis

redis-server /data/redis/conf/redis-6379.conf
# 或者
rds_start

2.5 关闭redis

redis-cli shutdown
# 或者
rds_stop

  当然还有一种更直接,更粗暴的方式 kill进程 。不建议这样操作;因为这样不会做持久化操作;

pkill redis-server

2.6 redis命令行

redis-cli
# 或者
rsql

2.7 redis工具箱

redis-benchmark:redis性能测试工具
redis-check-aof:检查aof日志的工具
redis-check-dump:检查rdb日志的工具
redis-cli:连接用的客户端
redis-server:redis服务进程

  现在可以愉快玩耍redis

# 1. 启动redis数据库
[redis@postgres ~]$ rds_start 
# 2. 连接redis数据库
[redis@postgres ~]$ rsql
# 3. 密码安全认证
127.0.0.1:6379> auth li0924
ok
# 4. 查看所有健;原命令是keys *;
127.0.0.1:6379> redis_keys *
1) "name"
# 5. 设置k-v
127.0.0.1:6379> set hello world
ok
127.0.0.1:6379> redis_keys *
1) "hello"
2) "name"
# 6. 获取健hello的值
127.0.0.1:6379> get hello
"world"
# 7. 退出redis客户端
127.0.0.1:6379> exit
# 8. 关闭redis数据库
[redis@postgres ~]$ rds_stop
[redis@postgres ~]$ rsql
could not connect to redis at 127.0.0.1:6379: connection refused