Redis简介
Redis 安装
Redis 常用命令
Jedis
Redis 集群
- Redis 简介
- Redis解释:Redis 是一个基于key-value形式进行存储的内存型数据库.
1.1 数据存储方式为key-value
1.2 数据存储在内存中.
1.2.1 优点:效率高.理论值:每秒10K数据读取.
1.3 定位:数据库软件.
1.3.1 作用:存储数据.
- 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和关系型数据库数据同步的问题.
- 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 常用命令
- 命令手册网址
http://doc.redisfans.com/ |
- Redis数据类型
2.1 String
2.2 Hash
2.3 List
2.4 Set
2.5 SortedSet 有序集合
- Redis 几个常用概念
- Redis 默认有16384 solts(槽),每个槽可以存储多个hash值.
- Redis 默认不需要密码:
2.1 注释去掉,设置自己的密码
- 设置密码后需要通过
3.1 -h 主机ip
3.2 -p 端口
3.3 -a 密码
./redis-cli -h 192.168.139.132 -p 6379 -a smallming |
四 . Jedis
- Jedis 是Redis 客户端工具jar
- 使用非集群版示例代码
Jedis jedis = new Jedis("192.168.139.132", 6379); // 新增或修改 // String result = jedis.set("address", "海淀"); // 查询 // String result1 = jedis.get("address"); // 删除 // Long index = jedis.del("address"); |
- Junit 4
- 单元测试插件.
- 使用Junit主要目的
2.1 可以不用编写main方法
- 要求:
3.1 方法必须是public void 且没有参数
3.2 当前项目不要有Test否则@Test引用自己Test类
- 实现步骤:(Maven)
4.1 在pom.xml中依赖junit4
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> |
4.2 在需要测试的方法上添加@Test
4.2.1 @Before 在@Test之前执行
4.2.2 @After 在@Test之后执行.
4.2.3 如果有多个@Test 每个@Test前后都会执行@Before和@After
@Test public void testInsert() { |
- Jedis 集群
- 集群的概念:
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.139.132", 7001)); set.add(new HostAndPort("192.168.139.132", 7002)); set.add(new HostAndPort("192.168.139.132", 7003)); set.add(new HostAndPort("192.168.139.132", 7004)); set.add(new HostAndPort("192.168.139.132", 7005)); set.add(new HostAndPort("192.168.139.132", 7006)); JedisCluster cluster = new JedisCluster(set);
String result = cluster.get("a"); System.out.println(result); |