BigData-10:MemCached和Redis

本文详细介绍了MemCached和Redis两种主流缓存系统的基本原理、安装配置、操作方式及高级功能,包括MemCached的路由算法、主主复制,Redis的数据类型、持久化策略、主从复制与哨兵机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MemCached
1、基本的原理和体系架构
)在内存中,维护一张巨大的Hash表
)MemCached通过一个路由算法来决定数据存储的位置,决定数据存储在哪个节点上

2、安装和配置
前提:(1)有gcc的编译器
(2)安装LibEvent:建议自己安装一个
)确定是否已经安装LibEvent
rpm -qa|grep libevent
)卸载原来的libevent
rpm -e libevent-2.0.21-4.el7.x86_64 --nodeps
(表示不卸载相关的依赖)
安装libevent
*、解压:tar -zxvf libevent-2.0.21-stable.tar.gz
*、安装到/root/training/libevent目录
./configure --prefix=/root/training/libevent
make
make install

安装memcache: 版本:memcached-1.4.25.tar.gz(官方的版本:节点之间彼此不进行通信)
)解压
)配置
./configure --prefix=/root/training/memcached --with-libevent=/root/training/libevent
(*)编译安装
make
make install

启动MemCached实例
./memcached -u root -d -m 128 -p 11211
./memcached -u root -d -m 128 -p 11212
./memcached -u root -d -m 128 -p 11213

3、操作MemCached
(*)命令行:MemCached没有自己的命令行工具,使用telnet作为命令行工具
安装telnet客户端
rpm -ivh telnet-0.17-64.el7.x86_64.rpm

连接 telnet 127.0.0.1 11211
操作命令:插入数据:add/set
set: 如果key已经存在,会替换原来的值
add: 如果key已经存在,返回一个错误

举例:add key1 0 0 4
参数:key1:是key
第一个0: 标志位
第二个0:数据过期的时间,0表示永远不过期
4表示:数据的长度

管理命令:查看统计信息
统计信息的命令:
stats
stats items
stats slabs

(*)Java API

4、介绍:MemCached路由算法(客户端路由)
(1)求余数的Hash算法
(2)一致性Hash算法

5、MemCached的主主复制功能:使用的是一个日本工程师改写的版本(非官方)
:memcached-1.2.8-repcached-2.2.tar.gz
注意:不是主从复制
安装
tar zxvf memcached-1.2.8-repcached-2.2.tar.gz
cd memcached-1.2.8-repcached-2.2
./configure --prefix=/root/training/memcached_replication --with-libevent=/root/training/libevent/ --enable-replication
make

出错:
memcached.c:696:30: error: ‘IOV_MAX’ undeclared (first use in this function)

修改源码:
vi memcached.c

55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 //#if defined(__FreeBSD__) || defined(__APPLE__)
58 # define IOV_MAX 1024
59 //#endif
60 #endif

make install

启动,需要指定对端的地址
bigdata111: ./memcached -d -u root -m 128 -x 192.168.157.115
bigdata115: ./memcached -d -u root -m 128 -x 192.168.157.111

错误
./memcached: error while loading shared libraries: libevent-2.0.so.5: 
	cannot open shared object file: No such file or directory

判断:命令memcached依赖哪些库?
ldd memcached

linux-vdso.so.1 =>  (0x00007ffc9fc0f000)
libevent-2.0.so.5 => not found
libc.so.6 => /lib64/libc.so.6 (0x00007f7804599000)
/lib64/ld-linux-x86-64.so.2 (0x000056376fc98000)

创建一个连接,让系统的libevent-2.0.so.5指向我们自己安装的libevent
64位系统ln -s /root/training/libevent/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
32位系统ln -s /root/training/libevent/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5

二、Redis:也需要gcc的编译器
(一)Redis简介
1、Redis的前身:MemCached
2、和MemCached的区别:
)支持持久化:RDB快照、AOF日志
)丰富的数据类型

(二)安装和配置Redis、核心配置文件
1、解压
2、编译安装
make
make PREFIX=/root/training/redis install

3、Redis的命令脚本

			redis-benchmark   Redis的压力测试工具
			redis-check-aof   检查AOF日志文件
			redis-check-dump  检查RDB日志文件
			redis-cli         Redis的客户端脚本
			redis-sentinel    Redis的哨兵
			redis-server      Redis的服务器脚本

4、核心配置文件 redis.conf
需要拷贝一个 cp ~/tools/redis-3.0.5/redis.conf conf/
参数

daemonize no 是否以后台运行Redis,建议改为yes
port 6379

启动:bin/redis-server conf/redis.conf

(三)操作Redis:不作为重点
1、命令行: redis-cli
2、Java API

(四)Redis的事务:不是真正的事务,是一种模拟
1、复习:事务(关系型数据库)
)什么是事务?
)事务的特点?
)事务的特性? ACID
)Oracle中事务的本质:将事务的DML操作写入日志

2、Redis的事务的本质:将一组操作放入队列中,一次执行(批处理的概念)
3、对比Oracle和Redis的事务的区别
Oracle Redis
开启事务: 自动开启 命令:multi
执行语句: DML Redis的命令
提交事务: 显式提交(commit)、隐式提交(DDL) 命令:exec
回滚事务: 显式回滚(rollback)、隐式回滚 命令:discard

4、举例:银行转账
set tom 1000
set mike 1000
multi —> 开启事务
decrby tom 100
incrby mike 100

5、举例:买票
set tom 1000
set ticket 1 有1张票
multi
decrby tom 100
decr ticket
exec

(五)Redis锁机制(简单的锁): 执行事务操作的时候,如果监视的值发生了变化,则提交失败
命令:watch
举例:买票
set tom 1000
set ticket 1 有1张票
watch ticket ----> 相当于给ticket加了锁
multi
decrby tom 100
decr ticket
exec

(六)Redis的消息机制:消息系统

(七)重点:Redis的持久化
1、RDB

2、AOF

(八)重点:Redis的主从复制

(九)重点:Redis的HA(哨兵机制)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phial03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值