缓存中间件Redis安装及功能演示、企业案例

目录

一、Redis介绍

1、介绍

2、业务使用场合

3、对比memcached

二、安装和配置

1、源码编译安装

2、后台启动配置

3、命令行客户端简单使用

三、数据结构类型操作

1、key

2、String

3、List

4、set

5、zset

6、Hash

四、数据持久化操作

1、snappshoting(快照技术)

[2、append only file](#2、append only file)

五、企业案例

1、主从模式

2、安全设置


一、Redis介绍

1、介绍

Nosql 非关系数据库 key => value 键值对

Redis是R emote D ictionary Server(远程数据服务)的缩写

由意大利人 antirez(Salvatore Sanfilippo) 开发的一款 内存高速缓存数据库

该软件使用C语言编写,它的数据模型为 key-value

它支持丰富的数据结构,比如 String list(双向链表) hash(哈希) set(集合)

可持久化(保存数据到磁盘中),保证了数据安全

2、业务使用场合

①[Sort Set]排行榜应用,取top n操作,例如sina微博热门话题

②[List]获得最新N个数据 或 某个分类的最新数据

③[String]计数器应用

④[Set]sns(social network site)获得共同好友

⑤[Set]防攻击系统(ip判断)黑白名单等等

3、对比memcached

①Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结的存储。

②Redis支持master-slave(主---从)模式应用。

③Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

④Redis单个value存储string的最大限制是512MB, memcached只能保存1MB的数据

⑤redis是单核,memcached是多核.

++由于redis只能使用单核,而memcached可以使用多核,所以在比较上,平均每一个核上redis在储存小数据时比memcached性能更高。而却100K以上数据中,memcached性能要高于redis,虽然redis最近也在储存大数据的性能上进行优化,但是比起memcached还是有点逊色。结论是无论你使用那个,每秒处理请求的次数都不会成为瓶颈。++

++需要关注内存使用率。对于key-vlaue这样简单的数据储存,memcached的内存使用率更高,如果采用hash结构,redis的内存使用率会更高,当然这都依赖于具体的应用场景。++

二、安装和配置

官方网址:https://redis.io/

github:https://github.com/antirez/redis

1、源码编译安装

①上传软件到目录中

redis-5.0.5.tar.gz redis软件

②解压编译安装

tar xvf redis-5.0.5.tar.gz

cd redis-5.0.5

make PREFIX=/usr/local/redis install

使用文件/usr/local/redis/bin

redis-cli 命令行客户端

redis-server 服务端

③测试启动

cd /usr/local/redis/bin

./redis-server

2、后台启动配置

①复制配置文件到软件目录下

cp redis-5.0.5/redis.conf /usr/local/redis/

②修改编辑配置文件

vim /usr/local/redis/bin/redis.conf

修改内容:
daemonize no(修改为yes,支持后台启动)

③启动redis-server加入redis.conf参数

cd /usr/local/redis/bin

./redis-server /usr/local/redis/redis.conf

3、命令行客户端简单使用

telnet可以连接redis,没有本身redis-cli更加好用

①查看操作语法帮助

./redis-cli 进入客户端

②系统状态信息

info

三、数据结构类型操作

1、key

key的命名规则不同于一般语言,键盘上除了空格、\n换行外其他的大部分字符都可以使用像"my key"和"mykey\n"这样包含空格和换行的key是不允许的。

我们在使用的时候可以自己定义一个Key的名称。

Key不要太长。占内存,查询慢。

Key不要太短。 可读性好,比如username,age,score...

exists key 判断key是否存在

tpye key 查看存储的数据类型

keys * 查询所有的key

rename oldkey newkey 修改key名称

expire key seconds 设置key的过期时间

del key 删除key

select num(0-15) 切换数据库,默认redis提供了16个数据库,可以修改配置文件设置默认数据库数量,数据库为了更好的隔离数据

dbsize 用于查看当前key的数量

flushdb 清除当前库

flushall 清除所有库

shutdown 关闭数据库

move key num(数据库编号) 移动key到其他库

2、String

string是redis最基本的类型,redis的string可以包含任何数据,单个value值最大上限是512MB,如果只用string类型,redis就可以被看作加上持久化特性的memcached。

set key value 设置键值对

get key 获取key对应的value

mset key value key value 同时设置多个键值对

mget key key 同时获取多个key对应的value

incr key 对应的value值加1

decr key 对应的value值减1

incrby key num 对应的value值加num

decrby key num 对应的value值减num

append key 追加的值 给key对应的value追加值

substr key 开始下标 结束下标 截取字符串

strlen key 获取key对应value的长度

3、List

key value(value1,value2,value3)

list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素这使得list既可以用作栈,也可以用作队列。

栈:先进后出 ,举例:羽毛球桶,进电梯
队列:先进先出 ,举例:正常排队取钱
首部(左 left) 尾部(右right)

例:需求:显示最后登录的几个用户

设计实现:

①登录一个用户,把用户名称或者id存储在list中

②从头部(左部)存,从头部取(左部)

用户:zhang,wang,li

Key名称:loginname

lpush 从队列左边存放数据

rpush 从队列右边存储数据

lpop 队列左边取值

rpop 队列右边取值

llen 查看list长度

lrange 查看list里的值

4、set

redis的set是string类型的无序集合。集合里不允许有重复的元素,set元素最大可以包含(2的32次方-1)个元素。

关于set集合类型除了基本的添加删除操作,其他常用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。

需求:实现朋友圈的存储和共同好友的计算

sadd 添加集合

smembers key 查看集合里的元素

sinter key key 集合交集

sunion key key 集合并集

sdiff key key 差集

srem key value 移除集合元素

sadd key value 添加集合元素

sismember key value 判断值是否在集合里

smove key key value 移动元素

scard key 统计集合元素数量

5、zset

zset也是string类型元素的集合,有序集合,元素不允许重复,不同的是每个元素都会关联一个权。通过权值可以有序的获取集合中的元素,可以通过score值进行排序。

需求:实现手机APP市场的软件排名

#zadd 添加zset

#zrange 从小到大排序

#zrevrange 从大到小排序

#zscore 查看权重

#zincrby 增加权重(正数加权重,负数减权重)

6、Hash

使用redis做缓存,可以使用hash结构,压缩效率和使用效率更高,比string Hash存储数据和关系型数据库(mysql),存储的一条数据的结构极为相似。

hmset 插入hash数据

hget 获取具体数据

hmget 获取多个数据

hgetall 获取key对应的所有数据

hdel删除key对应value中的列

四、数据持久化操作

数据 持久化(数据在服务或者软件重启之后不丢失)
如果数据只存在内存中,肯定会丢失,实现持久化,就需要把数据存储到磁盘中。

1、snappshoting(快照技术)

默认snappshoting是开启的,有一个备份的频率,通过查看配置文件可以看到。

测试备份频率,在5分钟内,进行10个key的改变,第9个的时候数据库时间没有改变,第10个数据库时间改变了。

手动数据备份

127.0.0.1:6379> save

数据恢复 需要先停掉redis服务,导入数据文件

如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可

2、append only file

①开启aof

开启aof后,之前的redis里的数据会丢失

appendonly yes:开启aof

重启redis服务

②备份频率

snappshoting 一般的数据持久化使用,效率高,数据迁移方便

aof 适合于备份、数据实时性备份要求更高的情况

五、企业案例

1、主从模式

①master配置

vim /usr/local/redis/bin/redis.conf【文件名唯一,路径可能会根据不同的安装方式和操作系统而有所不同】

开启监听,在网络中与其他服务器进行网络交互的网卡

bind的ip指的是其他的主机需要和这个主机通讯的ip(这个的主机)

②slave配置

③查看效果

2、安全设置

①修改配置文件

②测试密码登录

相关推荐
Y***98511 小时前
DVWA靶场通关——SQL Injection篇
数据库·sql
Yawesh_best1 小时前
告别系统壁垒!WSL+cpolar 让跨平台开发效率翻倍
运维·服务器·数据库·笔记·web安全
蒋士峰DBA修行之路1 小时前
实验二十八 SQL PATCH调优
数据库·sql·gaussdb
Hard but lovely1 小时前
linux: pthread库的使用和理解
linux
I***t7162 小时前
一条sql 在MySQL中是如何执行的
数据库·sql·mysql
一 乐2 小时前
应急知识学习|基于springboot+vue的应急知识学习系统(源码+数据库+文档)
数据库·vue.js·spring boot
老前端的功夫3 小时前
前端浏览器缓存深度解析:从网络请求到极致性能优化
前端·javascript·网络·缓存·性能优化
微学AI3 小时前
内网穿透的应用-突破局域网束缚,MongoDB 远程访问使用cpolar原来可以这么简单
数据库·mongodb
这儿有一堆花3 小时前
Kali Linux:探测存活到挖掘漏洞
linux·运维·服务器