目录:
Redis
简介
Redis
安装
Redis
常用命令
Jedis
Redis
集群
一.Redis 简介
1.Redis
解释:Redis 是一个基于
key-value
形式进行存储的内存型数据库.
1.1 数据存储方式为 key-value
1.2 数据存储在内存中.
1.2.1 优点:效率高
.
理论值
:
每秒
10K
数据读取
.
1.3 定位:
数据库软件
.
1.3.1 作用:存储数据
.
2.Reids是一个 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
数据中
2.3.3.2
考虑到
: NoSQL
和关系型数据库数据同步的问题
.
3.Redis 持久化策略
3.1 rdb
3.1.1 默认的持久化策略.
3.1.2 每隔一定时间后把内存中数据持久化到 dump.rdb 文件中.
3.1.3 缺点:
关系型数据库 NoSQL
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 常用命令
1. 命令手册网址
http://doc.redisfans.com/
|
2. Redis 数据类型
2.1 String
2.2 Hash
2.3 List
2.4 Set
2.5 SortedSet 有序集合
三. Redis 几个常用概念
1. Redis 默认有 16384 solts(槽
),
每个槽可以存储多个
hash
值
.
2. Redis 默认不需要密码:
2.1 注释去掉,
设置自己的密码
3. 设置密码后需要通过
3.1 -h 主机 ip
3.2 -p 端口
3.3 -a 密码
./redis-cli -h 192.168.139.132 -p 6379 -a smallming
|
四 . Jedis
1. Jedis 是
Redis
客户端工具
jar
2. 使用非集群版示例代码
Jedis jedis = new Jedis("192.168.182.130", 6379);
//增加
// String result = jedis.set("address", "武汉");
// System.out.println(result);
//修改
//jedis.set("address", "北京");
//删除
jedis.del("address");
//查看
System.out.println(jedis.get("address"));
五. Jedis 集群
1. 集群的概念:
1.1 多个业务单元协同工作组成的整体称为集群.
1.1.1 每个业务单元都是相同的.
2. 当集群中业务单元中超过或等于 1/2 个
down
掉时整个集群不可用.
2.1 建议使用奇数个,
整体
down
机率小
3.
一主一备
模式
3.1 给每个业务单元创建一个备份业务单元.
原来的业务单元 (master)后产生的叫做
(slave)
4. 集群和伪集群
4.1 集群:
每个业务单元都安装到单独的服务器上
4.2 伪集群: 所有业务单元都安装到同一个服务器上,
通过端口区分不同的业务单元.
六. 使用 Jedis 访问 Reids 集群
Set<HostAndPort> set = new HashSet<>();
set.add(new HostAndPort("ip", 7001));
set.add(new HostAndPort("ip", 7002));
set.add(new HostAndPort("ip", 7003));
set.add(new HostAndPort("ip", 7004));
set.add(new HostAndPort("ip", 7005));
set.add(new HostAndPort("ip", 7006));
JedisCluster cluster = new JedisCluster(set);
String result = cluster.get("a");
System.out.println(result);