Memcached&Redis构建缓存服务器

前言

许多Web应用都将数据保存到关系型数据库( RDBMS)中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。Memcached/redis是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web等应用的速度、 提高可扩展性。

RDBMS即关系数据库管理系统(Relational Database Management System)

1、简介

1、nosql产品: redis,mongodb,memcached.

NOSQL名词解释:非关系型数据库

1.以键值对的方式存储数据—(Key-Value)的形式

2.缓存数据库

2、NoSQL的优点/缺点

优点:

  • 高可扩展性
  • 分布式计算
  • 低成本
  • 架构的灵活性
  • 没有复杂的关系

缺点:

  • 没有标准化
  • 有限的查询功能(到目前为止)
  • 最终一致是不直观的程序

缓存服务器作用: 加快访问速度 ,缓解数据库压力

2、memcached

1、特点

1.内置内存存储方式-----------为了提高性能,memcached中保存的数据都存储在memcache内置的内存存储空间中。由于数据仅存在于内存中,重启操作系统会导致全部数据消失
2.简单key/value存储---------------服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;

3、Redis服务

1、介绍

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库

redis的官网:redis.io
注:域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地

1、redis的特点:

1.丰富的数据结构 -----String,list,set,hash等数据结构的存储
2.支持持久化
3.支持事务 ---------------事务是指“一个完整的动作,要么全部执行,要么什么也没有做”。
4.支持主从

2、区别

redis和memcache比较
1).Redis不仅仅支持简单的k/v类型的数据,同时还提供了list,set,zset,hash等数据结构的存储
2).Redis支持master-slave(主-从)模式应用
3).Redis支持数据的持久化

4、安装Redis

1、安装单机版redis

root@redis-master ~]# mkdir -p /data/application —创建工作目录
[root@redis-master ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz —下载redis
[root@redis-master ~]# tar xzf redis-4.0.9.tar.gz -C /data/application/ —解压
[root@redis-master ~]# cd /data/application/
[root@redis-master application]# mv redis-4.0.9/ redis
[root@redis-master application]# cd redis/
[root@redis-master redis]# yum install -y gcc make #安装编译工具
[root@redis-master redis]# make
注:如果报错请将刚才解压的安装包删除掉,再次重新解压并进行make安装即可。
[root@redis-master redis]# mv redis.conf redis.conf.bak
[root@redis-master redis]# vim redis.conf —修改如下
bind 192.168.246.202  #只监听内网IP
daemonize yes     #开启后台模式将on改为yes
port 6379 #端口号
dir /data/application/redis/data  #本地数据库存放持久化数据的目录该目录-----需要存在
创建存放数据的目录
[root@redis-master redis]# mkdir /data/application/redis/data
配置redis为systemctl启动
[root@redis-master redis]# cd /lib/systemd/system
[root@redis-master system]# vim redis.service
[Unit]
Description=Redis
After=network.target

[Service]
ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf --daemonize no
ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown

[Install]
WantedBy=multi-user.target

参数详解:
• [Unit] 表示这是基础信息
• Description 是描述
• After 是在那个服务后面启动,一般是网络服务启动后启动

• [Service] 表示这里是服务信息
• ExecStart 是启动服务的命令
• ExecStop 是停止服务的指令

• [Install] 表示这是是安装相关信息
• WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

8.启动服务:
[root@redis-master system]# systemctl daemon-reload #重新加载
[root@redis-master system]# systemctl start redis.service

在这里插入图片描述
登陆redis
[root@redis-master system]# cd /data/application/redis/src/
[root@redis-master src]# ./redis-cli -h 192.168.246.202 -p 6379
192.168.246.202:6379> ping —测试redis是否可以用
PONG
192.168.246.202:6379> set name xiaoming #设置key–name,并设置值
OK
192.168.246.202:6379> get name #获取到key
“xiaoming”
192.168.246.202:6379>
单机版redsi已经部署完成。将ip和端口发给开发就可以了。

192.168.246.202:6379> set key value [EX seconds] [PX milliseconds] [NX|XX]
EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value。
PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value。
NX : 只在键不存在时, 才对键进行设置操作。
XX : 只在键已经存在时, 才对键进行设置操作。

使用 EX 选项:
[root@localhost src]# ./redis-cli -h 192.168.62.231 -p 6379
192.168.62.231:6379> set name1 xiaohong EX 10
OK
192.168.62.231:6379> get name1
“xiaohong”
等待10s,再次查看
192.168.62.231:6379> get name1
(nil)

使用 PX 选项:
192.168.62.231:6379> set name2 xiaohong PX 3233
OK
192.168.62.231:6379> get name2
“xiaohong”
等待3s,再次查看
192.168.62.231:6379> get name2
(nil)

使用 NX 选项:
192.168.62.231:6379> set class 1901 NX
OK # 键不存在,设置成功
192.168.62.231:6379> get class
“1901”
192.168.62.231:6379> set class 1901 NX
(nil) # 键已经存在,设置失败
192.168.62.231:6379> get class
“1901” # 维持原值不变

使用 XX 选项:
192.168.62.231:6379> set home taikang XX
(nil) # 因为键不存在,设置失败
192.168.62.231:6379> set home taikang
OK # 先给键设置一个值
192.168.62.231:6379> set home zhengzhou XX
OK # 设置新值成功
192.168.62.231:6379> get home
“zhengzhou”

删除:
192.168.62.231:6379> del class
(integer) 1
192.168.62.231:6379> get class
(nil)

redis的相关工具
./redis-cli #redis的客户端
./redis-server #redis的服务端
./redis-check-aof #用于修复出问题的AOF文件
./redis-sentinel #用于集群管理

猜你喜欢

转载自blog.csdn.net/edcbc/article/details/106694171
今日推荐