一、Redis 简介
1.什么是redis?
Redis 解释:Redis 是一个基于 key-value 形式进行存储的内存型数据库.
1.1 数据存储方式为 key-value
1.2 数据存储在内存中.
- 1.2.1 优点:效率高.理论值:每秒 10K 数据读取.
1.3 定位:数据库软件.
- 1.3.1 作用:存储数据.
2.Redis 是一个 NoSql 数据库
2.1 字面理解: 不使用 SQL 命令操作数据库软件.
2.2 NoSQL : 英文全称 Not Only SQL ,表示在应用程序开发时,不是必须使用关系型数据库,可以使用 NoSQl 替代关系型数据库的部分功能.
2.3 目前 NoSQL 不能完全替代关系型数据库.使用关系型数据库结合 NoSQl 数据库进行完成项目
-
2.3.1 当数据比较复杂时不适用于 NoSQL 数据库
-
2.3.2 关系型数据库依然做为数据存储的主要软件.
-
2.3.3 NoSQL 数据库当作缓存工具来使用.
- 2.3.3.1 把某些使用频率较高的内容不仅仅存储到关系型数据库中还存储到 NoSQL 数据中,考虑到NoSQL 和关系型数据库数据同步的问题.

3.Redis 持久化策略
3.1 rdb
- 3.1.1 默认的持久化策略.
- 3.1.2 每隔一定时间后把内存中数据持久化到 dump.rdb 文件中.
- 3.1.3 缺点:
- 3.1.3.1 数据过于集中.
- 3.1.3.2 可能导致最后的数据没有持久化到 dump.rdb 中
- 3.1.3.2.1 解决办法:使用命令:SAVE 或 BGSAVE 手动持久化.
3.2 aof
- 3.2.1 监听 Redis 的日志文件,监听如果发现执行了修改,删除,新增命令.立即根据这条命令把数据持久化.
- 3.2.2 缺点:
- 3.2.2.1 效率降低.
二、Redis 安装
三、Redis 常用概念
-
命令手册网址
http://doc.redisfans.com/ -
Redis 数据类型
2.1 String
2.2 Hash
2.3 List
2.4 Set
2.5 SortedSet 有序集合 -
Redis 默认有 16384 solts(槽),每个槽可以存储多个 hash 值,redis集群总共16384 solts
-
连接测试
4.1 -h 主机 ip
4.2 -p 端口
4.3 -a 密码
./redis-cli -h 192.168.84.138 -p 6379 -a 123456
四、Jedis
Jedis 是 Redis 客户端工具 jar
使用非集群版示例代码
Jedis jedis = new Jedis("192.168.84.138", 6379);
// 新增或修改
// String result = jedis.set("address", "nc");
// 查询
// String result1 = jedis.get("address");
// 删除
// Long index = jedis.del("address");
五、Redis 集群
-
集群的概念:
1.1 多个业务单元协同工作组成的整体称为集群.- 1.1.1 每个业务单元都是相同的.
-
当集群中业务单元中超过或等于 1/2 个 down 掉时整个集群不可用.
2.1 建议使用奇数个,整体 down 机率小 -
一主一备模式
3.1 给每个业务单元创建一个备份业务单元. 原来的业务单元(master)后产生的叫做(slave) -
集群和伪集群
4.1 集群: 每个业务单元都安装到单独的服务器上
4.2 伪集群: 所有业务单元都安装到同一个服务器上,通过端口区分不同的业务单元. -
使用 Jedis 访问 Reids 集群
Set<HostAndPort> set = new HashSet<>();
set.add(new HostAndPort("192.168.84.138",7001));
set.add(new HostAndPort("192.168.84.138",7002));
set.add(new HostAndPort("192.168.84.138",7003));
set.add(new HostAndPort("192.168.84.138",7004));
set.add(new HostAndPort("192.168.84.138",7005));
set.add(new HostAndPort("192.168.84.138",7006));
JedisCluster cluster = new JedisCluster(set);
String result = cluster.get("a");
System.out.println(result);
网友评论