redis

零、介绍:点击打开链接

缓存框架市场情况

1)  Ehcache 最早出现成型的缓存框架,它是所有框架最爱选择的内部集成默认框架hibernate,spring,mybaits(有个弱点是单机,目前不知道是否支持分布式,现在很少用)

2)  Memcache产品非常棒,使用10多年,现在很多公司产品仍然在使用这个产品(分布式)大型项目构建都使用它。致命缺点:不落地(内存有限,一旦掉电以辛苦存的数据就瞬间丢失了)。支持数据结构kv string。多线程

3)  Redis替代MemCache,改善了两个方面。a.落地、b.掉电以后可以快速回复现场,它每秒落地一次,所以即使掉电丢失也只丢失1s的数据。数据结构支持更多b.string/hash/list/set/orderedset(在百万的级别,redis和memcache性能伯仲之间,业务慢)单线程+多实例(单机多实例)

Redis用c语句写。Jvm中有native区(该区是c语言的地盘)

 

缓存的数据是可以丢失的,丢失了可以再从数据库获取。

 

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

也叫做非结构化数据。nosql典型代表。not only sql。spark SQL

 

nginx性能高 5w/s

Redis性能高 5w/s

一、安装

点击打开链接

 

3个节点

两个物理机(虚拟机),在一台物理机(虚拟机)创建2个实例

 

默认redis有16个数据库,数据库名称不能更改,默认是0到15

incr/decr网站统计值都用它来自加,自减。c语言,redis命令

MemCache string 几百k。Redis string512m

 

虚拟机复制后,新的redis中有无数据?

重启redis,之前数据是存在的。

复制redis,也有数据。需要flushall先把脏数据清除。

 

二、问题和解决

 

使用自己的redis客户端(shell)连接redis服务器

1.查看防火墙策略有策略删掉策略

2.打开redis服务器的远程访问

问题

解决

3.关闭redis的保护模式

问题:

解决:

4.命令

(1)开启命令:redis-server 配置文件 &

(2)查看redis是否是启动的:ps -ef | grep redis

(3)登录客户端:redis-cli -h ip地址 -p 端口号

(4)查看某个key中的数据:Lrange key start end

(5)进入redis:设置口令

api中也要登录才行

三、使用

1.分片:将多个redis的内存合为一个整体使用

(1)安装三个redis

(2)编程jedis来讲三个redis来结合起来

引入jedis的jar包:

<!-- jedis -->
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.6.0</version>
</dependency>

编程:

public void test02(){
		List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();
		JedisShardInfo jedisShardInfo1 = new JedisShardInfo("192.168.239.129", 6379);
		list.add(jedisShardInfo1);
		JedisShardInfo jedisShardInfo2 = new JedisShardInfo("192.168.239.130", 6379);
		list.add(jedisShardInfo2);
		JedisShardInfo jedisShardInfo3 = new JedisShardInfo("192.168.239.130", 6380);
		list.add(jedisShardInfo3);
		ShardedJedis shardedJedis = new ShardedJedis(list);
		String string = shardedJedis.get("f5efb82a4fe18e09406b1b57cc0d2e55");
		System.out.println(string);
		shardedJedis.set("china", "北京");
		String string1 = shardedJedis.get("china");
		System.out.println(string1);
		for(int i=0;i<100;i++){
			shardedJedis.set("n"+i, ""+i);
		}
	}

(3)问题

先是两个节点分片,然后又新增一个服务器,将分片扩充到三个节点

有无效数据(僵尸数据)

新扩充节点,法则 hash(key)% n来分布数据,获取数据也是从放的地方获取

所以不用处理僵尸数据:自动删除过期数据策略,默认策略LRU(最近最久未使用

开发人员根本不关心

2.主从复制,实时备份

(1)设置三个配置文件

(2)将master和两个slave关联

在slave节点上执行slaveof  master-host port

info查看主 role:master,看slave数量

(3)操作

1)当从挂接到主上时,自动同步数据,success

2)挂接完成,当主的信息新增,修改,删除变化动作,从上就会也执行相应语句。

3.集群高可用(哨兵sentinel)

(1)介绍

 

redis提供两种高可用,哨兵,集群

哨兵 sentinel.conf,redis3.0之后才实现

启用哨兵,必须两个以上

它类似zookeeper管理整个集群,心跳,如果某个服务器不回应。宣布死亡,要从节点的所有从节点中选举一个服务器作为新的继任者。

切换过程不是立即,尝试1分钟。如果这个时间内,主master又重启加入集群,继续。

(2)配置setinel.conf

1)修改端口

 

2)sentinel.conf中如下配置在变动,表示哨兵管理的集群的主节点,这样哨兵和管理的集群就联系起来了

sentinel monitor mymaster 127.0.0.1 6379 2

sentinel monitor mymaster 127.0.0.1 6380 2

(3)启动

redis-sentinel sentinel.conf

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值