Redis总结 一.Redis 简介 二. Redis 常用命令 三. Redis 几个常用概念 四 . Jedis 五. Jedis 集群 六. 流程

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和关系型数据库数据同步的问题.

      Redis总结
一.Redis 简介
二. Redis 常用命令
三. Redis 几个常用概念
四 . Jedis
五. Jedis 集群
六. 流程

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 常用命令

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 注释去掉,设置自己的密码 

  Redis总结
一.Redis 简介
二. Redis 常用命令
三. Redis 几个常用概念
四 . Jedis
五. Jedis 集群
六. 流程

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.139.132", 6379);
// 新增或修改
// String result = jedis.set("address", "海淀");
// 查询
// String result1 = jedis.get("address");
// 删除
// Long index = jedis.del("address");

五. Jedis 集群

1.集群的概念:

  1.1 多个业务单元协同工作组成的整体称为集群.

    1.1.1 每个业务单元都是相同的.

2.当集群中业务单元中超过或等于1/2down掉时整个集群不可用.

  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.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);

六. 流程

1.查询

  如果redis中存在,从redis中取出,如果redis中不存在,从mysql取出,缓存到redis中

2.增删改

  2.1操作mysql数据库

  2.2判断redis中是否有缓存数据

  2.3如果有则修改缓存数据