Redis 是一个基于 key-value 形式进行存储的内存型数据库。
优点:效率高
Reids 是一个 NoSql 数据库。
Redis 默认有 16384 solts(槽),每个槽可以存储多个 hash 值。
NoSQL : 英文全称 Not Only SQL ,表示在应用程序开发时,不是必须使用关系型数据库,可以使用 NoSQl 替代关系型数据库的部分功能。
RDB(Redis DataBase),默认的持久化策略,每隔一定时间后把内存中数据持久化到dump.rdb 文件中。
缺点: 数据过于集中,可能导致最后的数据没有持久化到 dump.rdb 中。
解决办法:使用命令:SAVE 或BGSAVE 手动持久化。
AOF(Append Only File),监听 Redis 的日志文件,监听如果发现执行了修改,删除, 新增命令。立即根据这条命令把数据持久化。
缺点: 效率降低。
redis是一种高级的key:value存储系统,其中value支持五种数据类型:
1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)
Jedis 是 Redis 客户端工具 jar (使用jedis连接Redis,就像使用JDBC来连接关系型数据库)
使用非集群版示例代码
@Test public void testInsert(){ Jedis jedis = new Jedis("192.168.141.141",6379); //增 // String result = jedis.set("address", "太阳系"); //查 // String result = jedis.get("address"); //改 // String result = jedis.set("address","地球"); //删 Long index = jedis.del("address"); }
集群的概念: 多个业务单元协同工作组成的整体称为集群。每个业务单元都是相同的。
当集群中业务单元中超过或等于 1/2 个 down 掉时整个集群不可用。 建议使用奇数个,整体 down 机率小 。
给每个业务单元创建一个备份业务单元.。原来的业务单元叫 (master),后产生的叫做(slave) (再次减少集群整体down掉的机率)(这个一主一备虽然是希望备份等待主down掉时使用,但是你会发现不管down不down掉,当主用的频率比较高的时候,备份的也会生效)
集群: 每个业务单元都安装到单独的服务器上 。
伪集群: 所有业务单元都安装到同一个服务器上,通过端口区分不同的业务单元。
使用 Jedis 访问 Reids 集群(伪集群)
@Test public void testInsert(){ Set<HostAndPort> set = new HashSet<>(); set.add(new HostAndPort("192.168.141.141", 7001)); set.add(new HostAndPort("192.168.141.141", 7002)); set.add(new HostAndPort("192.168.141.141", 7003)); set.add(new HostAndPort("192.168.141.141", 7004)); set.add(new HostAndPort("192.168.141.141", 7005)); set.add(new HostAndPort("192.168.141.141", 7006)); JedisCluster cluster = new JedisCluster(set); String result = cluster.get("age"); System.out.println(result); }