【数据库】Redis安装部署

一、Redis简介

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis通常运行在Linux/Unix/macOS下,对于Windows操作系统,微软开源技术小组曾经维护了一个Windows的Redis发行版,但是由于种种原因,停留在了比较旧的版本。

二、下载和安装

1.1准备工作

Redis的安装运行方式有两种:

1.二进制可执行文件,大部分操作系统都会在其软件仓库中预置Redis的二进制可执行文件,但版本迭代具有延后性。

2.源码编译安装,源码执行安装是比较常用的安装方式,需要在编译环境中安装GCC编译器和LIBC。

Redis官方地址:https://redis.io 上可以获取Redis及基本的安装步骤。

1.2操作步骤
1.1.1 安装编译工具
$ sudo yum install gcc
1.1.2 获取redis(https://redis.io/)
$ cd ~
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
1.1.3 解压Redis
$ tar -zxvf redis-5.0.5.tar.gz
1.1.4 编译依赖项
$ cd ~/redis-5.0.5/deps
$ make hiredis lua jemalloc linenoise
1.1.5 编译Redis
$ cd ~/redis-5.0.5
$ make
1.1.6 安装Redis
$ make PREFIX=/usr/local/redis install

至此redis完成安装,路径/usr/local/redis,该目录下仅有bin目录,bin目录中会有一些可执行文件

文件名 描述 备注
redis-server Redis服务端
redis-sentinel Redis Sentinel redis-server的软链接
redis-cli Redis命令行工具
redis-check-rdb Redis RDB检查工具
redis-check-aof Redis Append Only Files(AOF)检查工具
redis-benchmark Redis基准/性能测试工具

此外还需手动从源目录拷贝redis配置文件到安装目录上

$ mkdir /usr/local/redis/conf
$ cp ~/redis-5.0.5/redis.conf /usr/local/redis/conf
1.1.7 添加全局环境变量
$ sudo vim /etc/profile
#在文本内容后面追加内容:
export PATH=/usr/local/redis/bin:$PATH
#刷新环境变量:
sudo source /etc/profile

三、启动和停止Redis

前面我们已经将redis的运行目录(即bin)添加到了系统的环境变量里面,因此我们可以直接通过执行redis命令来完成相关操作,而无需到对应目录去执行。

1.1使用默认配置启动一个redis实例
$ redis-server
31391:C 13 Jul 2019 12:43:23.515 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
31391:C 13 Jul 2019 12:43:23.515 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=31391, just started
31391:C 13 Jul 2019 12:43:23.515 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
31391:M 13 Jul 2019 12:43:23.515 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 5.0.5 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 31391
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

31391:M 13 Jul 2019 12:43:23.518 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
31391:M 13 Jul 2019 12:43:23.518 # Server initialized
31391:M 13 Jul 2019 12:43:23.518 # 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.
31391:M 13 Jul 2019 12:43:23.518 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
31391:M 13 Jul 2019 12:43:23.518 * Ready to accept connections
^C31391:signal-handler (1562993057) Received SIGINT scheduling shutdown...
31391:M 13 Jul 2019 12:44:17.681 # User requested shutdown...
31391:M 13 Jul 2019 12:44:17.681 * Saving the final RDB snapshot before exiting.
31391:M 13 Jul 2019 12:44:17.682 * DB saved on disk
31391:M 13 Jul 2019 12:44:17.682 # Redis is now ready to exit, bye bye...
1.2 若要根据指定配置文件运行,可以在启动服务命令后追加配置文件
$ redis-server /usr/local/redis/conf/redis.conf

默认配置中,redis服务运行在前置窗口,关闭窗口redis服务便关闭,若要以守护进程的方式在后台运行,可以编辑配置文件并将daemonize参数设为yes并使用该配置文件启动

$ vim /usr/local/redis/conf/redis.conf
daemonize yes
$ redis-server /usr/local/redis/conf/redis.conf
1.3 停止Redis服务

停止redis服务可以通过Kill+PID:

$ kill `pidof redis-server`

也可以通过redis-cli调用shutdown命令:

$ redis-cli shutdown
1.4 使用redis-cli连接到Redis

通过redis-cli命令连接到redis服务

$ redis-cli -h  -p  -a 
127.0.0.1:6379>

我们可以发送一些简单的命令进行测试:

#1.设置两个字符键值对:
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> set key2 value2
OK
#2.获取刚刚设置的值:
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> get key2
"value2"

四、获取服务器信息

通过redis-cli的INFO命令可以获得当前Redis实例最全面和重要的信息。

1.1 使用redis-cli连接到一个Redis实例,然后执行INFO(不区分大小写)命令:
[root@zhan ~]# redis-cli
127.0.0.1:6379> INFO

单实例和集群的INFO信息不一样,当前可得单实例以下INFO信息(附描述):

# Server 关于Redis服务器的基本信息
redis_version:5.0.5         #redis服务版本
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a0c26467f84225b8
redis_mode:standalone       #redis运行模式(独立,哨兵或集群)
os:Linux 3.10.0-957.el7.x86_64 x86_64   #托管Redis服务器的操作系统
arch_bits:64                #架构(32位或64位)
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:71140            #服务器进程的PID
run_id:e818f36b08cef33ac2679118b1ea593777f961d4
tcp_port:6379               #TCP/IP侦听端口
uptime_in_seconds:1267      #Redis服务器启动后的秒数
uptime_in_days:0            #以天表示的相同值
hz:10                       #服务器的频率设置
configured_hz:10
lru_clock:2795106           #时钟递增每分钟,用于LRU管理
executable:/root/redis-server           #服务器可执行文件的路径
config_file:/usr/local/redis/conf/redis.conf #配置文件的路径

# Clients 客户端连接的状态和指标
connected_clients:1         #客户端连接数(不包括来自副本的连接)
client_recent_max_input_buffer:4        #当前客户端连接中最长的输出列表
client_recent_max_output_buffer:0       #当前客户端连接中最大的输入缓冲区
blocked_clients:0           #阻塞呼叫中待处理的客户端数量

# Memory 大致的内存消耗指标
used_memory:854576          #Redis使用其分配器分配的总字节数
used_memory_human:834.55K   #以前值的人类可读表示
used_memory_rss:17223680    
used_memory_rss_human:16.43M 
used_memory_peak:4954216     #Redis消耗的峰值内存
used_memory_peak_human:4.72M #上一值的人类可读表示
used_memory_peak_perc:17.25% 
used_memory_overhead:841174
used_memory_startup:791368   #Redis在启动时消耗的初始内存量
used_memory_dataset:13402
used_memory_dataset_perc:21.20%
allocator_allocated:1427904
allocator_active:1806336
allocator_resident:16568320
total_system_memory:1907970048  #Redis主机具有的内存总量
total_system_memory_human:1.78G #上一值的人类可读表示
used_memory_lua:37888
used_memory_lua_human:37.00K
used_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:0                 #maxmemory配置指令的值
maxmemory_human:0B          #上一值的人类可读表示
maxmemory_policy:noeviction 
allocator_frag_ratio:1.27
allocator_frag_bytes:378432
allocator_rss_ratio:9.17
allocator_rss_bytes:14761984
rss_overhead_ratio:1.04
rss_overhead_bytes:655360
mem_fragmentation_ratio:21.20
mem_fragmentation_bytes:16411104
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:49694
mem_aof_buffer:0
mem_allocator:jemalloc-5.1.0 #内存分配器,在编译时选择
active_defrag_running:0
lazyfree_pending_objects:0

# Persistence 数据持久化相关的状态和指标
loading:0   #指示转储文件的加载是否正在进行的标志
rdb_changes_since_last_save:0 #自上次转储以来的更改数
rdb_bgsave_in_progress:0      #表示RDB保存的标志正在进行中
rdb_last_save_time:1563075828 #上次成功RDB保存的时间戳
rdb_last_bgsave_status:ok     #最后一次RDB保存操作的状态
rdb_last_bgsave_time_sec:0    #最后一次RDB保存操作的持续时间
rdb_current_bgsave_time_sec:-1 #正在进行的RDB保存操作的持续时间
rdb_last_cow_size:4300800     #上次RBD保存操作期间写时复制分配的字节大小
aof_enabled:0   #表示AOF记录的标志已激活
aof_rewrite_in_progress:0     #表示AOF重写操作的标志正在进行中
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1  #最后一次AOF重写操作的持续时间
aof_current_rewrite_time_sec:-1 #正在进行的AOF重写操作的持续时间
aof_last_bgrewrite_status:ok  #最后一次AOF重写操作的状态
aof_last_write_status:ok      #最后一次写入操作到AOF的状态
aof_last_cow_size:0           

# Stats 总体统计数据
total_connections_received:3  #服务器接受的连接总数
total_commands_processed:9    #服务器处理的命令总数
instantaneous_ops_per_sec:0   #每秒处理的命令数
total_net_input_bytes:209     #从网络读取的总字节数
total_net_output_bytes:41083  #写入网络的总字节数
instantaneous_input_kbps:0.00 #网络的每秒读取速率,以KB /秒为单位
instantaneous_output_kbps:0.00 #网络的每秒写入速率,以KB /秒为单位
rejected_connections:0        #由于maxclients限制而拒绝的连接数
sync_full:0                   #具有副本的完整重新同步的数量
sync_partial_ok:0             #已接受的部分重新同步请求的数量
sync_partial_err:0            #拒绝部分重新同步请求的数量
expired_keys:0                #密钥到期事件的总数
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0                #由于maxmemory限制而被驱逐的密钥数量
keyspace_hits:2
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:175659
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

# Replication 主从复制相关的状态和指标
role:master                 #如果是单实例的即"master"
connected_slaves:0          #联机的从redis实例数量
master_replid:acfd45747c106739c8f4f28ee3108d71acf023aa
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU CPU使用情况
used_cpu_sys:2.455878        #Redis服务器消耗的系统CPU
used_cpu_user:1.653499       #Redis服务器消耗的用户CPU
used_cpu_sys_children:0.208633  #后台进程占用的系统CPU
used_cpu_user_children:0.001086 #后台进程占用的用户CPU

# Cluster Redis Cluster的状态
cluster_enabled:0

# Keyspace 数据库相关的统计数据
db0:keys=2,expires=0,avg_ttl=0

【未完待续.....】

你可能感兴趣的:(【数据库】Redis安装部署)