Redis

作者: 云之彼端l | 来源:发表于2018-12-28 11:11 被阅读0次

一、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支持单机版安装集群版安装

三、Redis 常用概念

  1. 命令手册网址
    http://doc.redisfans.com/

  2. Redis 数据类型
    2.1 String
    2.2 Hash
    2.3 List
    2.4 Set
    2.5 SortedSet 有序集合

  3. Redis 默认有 16384 solts(槽),每个槽可以存储多个 hash 值,redis集群总共16384 solts

  4. 连接测试
    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. 当集群中业务单元中超过或等于 1/2 个 down 掉时整个集群不可用.
    2.1 建议使用奇数个,整体 down 机率小

  3. 一主一备模式
    3.1 给每个业务单元创建一个备份业务单元. 原来的业务单元(master)后产生的叫做(slave)

  4. 集群和伪集群
    4.1 集群: 每个业务单元都安装到单独的服务器上
    4.2 伪集群: 所有业务单元都安装到同一个服务器上,通过端口区分不同的业务单元.

  5. 使用 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);

相关文章

网友评论

      本文标题:Redis

      本文链接:https://www.haomeiwen.com/subject/aqkslqtx.html