redis

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"
原文地址:https://www.cnblogs.com/laosun0204/p/11920861.html