Redis是NoSQL中比较常典型的一个非关系型数据库,在日常工作中也是最为常见的。Redis是一个由C语言编写的开源的、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
查看数据库排名可以通过https://db-engines.com/en/ranking这个网站,目前oracle排名第一,mysql第二,elasticsearch是大数据的数据库,简称ES
一、安装及启动Redis
由于我们日常中最多使用redis的环境是在linux中,所以这里主要来看linux下的安装方法
1、下载并安装Redis
我们可以使用wget下载,也可以将redis的包下载下来并且导入到linux中
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ yum install gcc tcl -y
$ tar xzf redis-2.8.8.tar.gz
$ cd redis-4.0.8
$ make
$ mkdir /usr/local/redis
$ make install PREFIX=/usr/local/redis
2、启动redis
在redis的bin目录下执行./redis-server,默认启动redis使用的是默认配置,端口号为6379,密码为空,如果需要后台启动的话,可以使用nohup来启动,nohup redis-server &,当然,如果需要指定redis的配置文件,那我们可以在启动命令中指定好配置文件就可以,nohup redis-server /usr/local/redis/redis.conf &
3、停止redis
在bin目录执行redis-cli shutdown
4、redis配置
在redis目录下vi redis.conf,可以看到启动命令./redis-server /path/to/redis.conf,如下是基础的关系
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes
长连接时间:tcp-keepalive 300,300秒
后台进程:daemonize yes
pid保存文件的位置:pidfile /var/run/redis_6379.pid
log文件位置:logfile ""
数据库数量:databases 16,就是在redis连接工具里看到16(可以改)个数据库,db0-db15
save 900 1 前面是秒,后面是执行次数,900秒内有1次操作,15分钟后就同步到本地文件里
save 300 10 300秒内有10次操作,5分钟后就同步到本地文件里
save 60 10000 60秒内有10000次操作,1分钟后就同步到本地文件里,会放在appendonly.aof这个文件里,以k-v形式
持久化使用压缩到本地文件:rdbcompression yes
数据保存在哪里:dbfilename dump.rdb
maxmemory:128mb
requirepass 123456:设置密码为123456
dir /usr/local/redis/redisData:对应redis指定的路径,指定好以后持久化的数据会保存到appendonly.aof这个文件里,以k-v形式
appendonly yes:启动持久化
5、连接redis
远程连接redis,可以使用redis自带的工具redis-cli,具体使用方法如下:
redis-cli -h 127.0.0.1 -p 6379 -n 0
-h <hostname> Server hostname (default: 127.0.0.1).
-p <port> Server port (default: 6379).
-a <password> Password to use when connecting to the server.
--help 显示帮助信息
在redis的bin目录下,直接./redis-cli -a 123456,就可以进入
如果redis客户端连不上redis服务器,要关闭虚拟机防火墙service iptables stop
切换数据库:
select 0
select 10
6、redis常用命令
redis是一个数据库,那么也就逃脱不开增删改查的操作,接下来把每种数据类型常用的增删改查命令列举一次,如果对某个命令不知道该如何使用的时候可以使用help来查询如:
右键数据库,选择Add New Key,输入key和value,默认类型是string类型,点击save在点击确定就添加成功了
也可以添加hash类型,要输入Key、Key和Value
常用命令:
string
增=改 set
set aaa eee EX 10(秒) set aaa eee PX 5000(毫秒)
append aaa test回车出现integer 4(test长度为4),append用处不多,如果aaa不存在就直接生成aaa:test,如果aaa存在就取追加后的长度
mset aaa cc2b bbb cc222 ccc 222(mset可以写入多个值)
getset key value,将value作为key的值写入,并将key的旧值返回
setex ssj(key) 10(s) sunshujiang(value)
删除
del key
查询
mget aaa bbb ccc可以获取到多个value
hash
增=改
hset besttest(hash的key) andashu(里面的key) good(里面的value)
查询
hget besttest andashu返回里面的value
hgetall besttest会返回所有的key和value
删除
hdel besttest andashu
7、监控redis
命令行监控:
吞吐量
Redis提供的INFO命令不仅能够查看实时的吞吐量(ops/sec),还能看到一些有用的运行时信息。下面用grep过滤出一些比较重要的实时信息,比如已连接的和在阻塞的客户端、已用内存、拒绝连接、实时的tps和数据流量等:
[root@besttest bin]# ./redis-cli -a 123456 info | grep -e "connected_clients" -e "blocked_clients" -e "used_memory_human" -e "used_memory_peak_human" -e "rejected_connections" -e "evicted_keys" -e "instantaneous"
connected_clients:2 # 连接数
blocked_clients:0 # 阻塞连接数
used_memory_human:651.30K # redis占用内存
used_memory_peak_human:651.30K # redis占用内存峰值
instantaneous_ops_per_sec:0 # 每秒处理请求数
instantaneous_input_kbps:0.00 # 每秒读字节数
instantaneous_output_kbps:0.00 # 每秒写字节数
rejected_connections:0 # 拒绝连接数
evicted_keys:0 # 运行以来删除的key数量
# 先将前面的命令保存到一个shell脚本中, vi testredis.sh #!/bin/bash /usr/local/redis/redis-cli -h 127.0.0.1 -p 6380 -a 123456 info | grep -e "connected_clients" -e "blocked_clients"
-e "used_memory_human" -e "used_memory_peak_human" -e "rejected_connections" -e "evicted_keys" -e "instantaneous" # 保存后并给予执行的权限 chmod 755 testredis.sh # 使用watch命令实时监控(每隔一秒高亮显示连接数、阻塞连接数、redis占用内存、redis占用内存峰值、拒绝连接数、运行以来删除的key数量、请求数的变化情况) watch -n 1 -d "/usr/local/redis/testredis.sh"