<address id="9vp7r"></address>

    
    
      <sub id="9vp7r"></sub><thead id="9vp7r"></thead>

          <address id="9vp7r"></address>

          <sub id="9vp7r"></sub>

          <sub id="9vp7r"></sub>

          NoSql和Redis

          1.NoSQL

          a)       指一些非关系型的数据库.读写性能高,存储会有过期,数据存放于内存中

          b)       分类

                               i.            键值数据库

                             ii.            列存储数据库

                            iii.            文档型数据库
          redis和memcached是key-value的Nosql,主要用来做缓存的

          2.Redis

          a)       高性能的开源的菲关系型数据库,数据保存在内存里面或者磁盘里面

          b)       Redis 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,redis严格上不是一种数据库,应该是一种数据结构化存储方法的集合。数据结构:数组,list,set,map等redis提供了一下操作方法,我们使用这些方法就可以对存入字符串,组织成各种类型数据库结构(string,list,set,map等).

          c)        Redis数据库的优势

                               i.            数据存储:存放在内存,还支持持久化.-存取速度快,并发能力强,数据安全性高
          还支持集群(主从同步) (支持高并发,海量数据), 数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。

                             ii.            它支持的存储值的类型

          1. String,list,set,sorted set,hash
          2. 支持集群(支持主从同步)
          3. 支持持久化

          d)       使用场景

                               i.            缓存: 对于经常查询的数据,将其放到Redis里面,会提高查询效率,减少数据库压力

                             ii.            计数器引用:微信点赞数量

                            iii.            实时攻防系统

                            iv.             

          e)       Redis服务器的安装

                               i.            启动Redis服务

          1. 手动启动:在安装目录下启动双击双击redis-service.exe
          2. Cmd启动:

                             ii.            Redis客户端操作Redis

          1. 对value为字符串(String) 操作

          a)       设置单个键值:set

          b)       设置多个键值:mset

          1. 对key的操作

          a)       Keys:获取所有的key列表

          b)       Del key:删除key值

          c)        expire key xx //设置key的过期时间(xx秒后过期)

          d)       ttl key:查看key 的过期时间

          e)       flushall:清除Redis数据库的所有数据

          f)        flushdb  :清除当前库的数据,Redis默认是16个数据库0,1….15

          1. 对list集合的操作
            rdis怎么实现栈(FILO)和队列(FIFO)???
            list控制同一边进,同一边出就是栈
            list控制一边进一边出就是队列
          2. 对Set集合的操作
          3. 对SortedSet(有序集合)的操作
          4. 对hash类型的操作
          5. Redis设置密码

          a)       通过命令设置密码
          CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效

          CONFIG SET requirepass 123456 //将密码设置为123456

          CONFIG SET requirepass "" //清除密码

          AUTH 123456  //输入密码进行认证

          b)       修改Redis的配置文件设置密码
          在配置文件redis.widows.conf中增加一行代码

          requirepass 123456

          将密码123456设置到配置文件中,redis启动时加载该文件,即可启用密码

          3.Java操作Redis服务器使用Jedis客户端

          a)       Jedis简单操作
          导入jedis的包
          @Test
          public void test()throws Exception{
              //创建连接Redis服务器
             
          String host ="127.0.0.1";
              int port = 6379;
              int timeout = 1000;//超时时间,1秒超时
             
          Jedis jedis = new Jedis(host,port,timeout);
          //密码认证
              jedis.auth("admin");
              //执行操作,设置key和value值.
             
          jedis.set("yhptest","yhptest dbl!");
              System.out.println(jedis.get("yhptest"));
              //关闭连接
             
          jedis.close();
          }

          b)       连接池配置

                               i.            通过jedis连接池,简单操作Redis数据库
          /思想:如果创建一个对象后需要为他设置很多值,还不如先创建它配置对象并做完配置,然后再通过配置对象创建它
          //1 创建jedispool配置对象
          //2 做配置-四个
          //3 创建jedispool
          //4 通过jedispool获取连接
          //5 执行操作
          // 6 释放连接
          // 7 摧毁连接池-如果是真正项目中它应该是一个受spring管理的单例
          @Test
          public void test()throws Exception{
              //1 创建jedispool配置对象
             
          JedisPoolConfig config = new JedisPoolConfig();
              //2 做配置-四个
             
          config.setMaxIdle(2);
              config.setMaxTotal(10);
              config.setMaxWaitMillis(1*1000); //创建连接超时
             
          config.setTestOnBorrow(true);//获取连接是测试连接是否畅通
              //3 创建jedispool
              //1*1000 获取连接超时时间
             
          JedisPool pool = new JedisPool(config,
                      "127.0.0.1",6379,1*1000,"admin");
              //4 通过jedispool获取连接
             
          Jedis jedis = pool.getResource();
              //5 执行操作
             
          jedis.set("jedispooltest","dbldblddzt.....");
              System.out.println(jedis.get("jedispooltest"));
              // 6 释放连接
             
          jedis.close(); //底层做了兼容,如果是连接池操作就是释放,如果是连接操作就是关闭
              // 7 摧毁连接池-如果是真正项目中它应该是一个受spring管理的单例
             
          pool.destroy();
          }
          总结:先创建Jedis连接池配置对象,然后创建连接池,创建连接池的时候传入连接池配置对象,redis存放的ip地址,Redis端口号,设置连接超时时间和操作Redis的用户,连接池获取到jedis对象,jedis对象操作服务器.关闭连接池和jedis对象

          c)        Jedis数据结构的操作

                               i.            Key值操作

                             ii.            String操作

                            iii.            List操作

                            iv.            Set操作

                             v.            Hash操作

                            vi.            事务处理

                           vii.            排序

          1. 数字集合是通过调用desc和asc方法排序
          2. 字符串字母是通过调用alpha方法进行参数排序.
          3. Redis持久化配置

          a)       两种持久化的方式

                               i.            RDB和AOF,可以通过修改Redis的conf配置文件进行配置

                             ii.            服务器启动执行载入程序à判断是否开启了AOF的持久化,开启了就载入AOF的文件,未开启就载入RDB的文件

                            iii.            RDB模式

          1. RDB模式可以在指定的时间间隔内生成数据集的时间点快照,默认是开启RDB模式的,
          2. 如何关闭默认开启的RDB持久化方式:在Redis.conf文件里面将在指定时间生成数据集的时间快照进行一个注释,如果中途突然断电,无法持久化到磁盘
            save ""

            # save 900 1   //至少在900秒的时间段内至少有一次改变存储同步一次

            # save xxx

            # save 60 10000

               iv.            AOF模式

          1. AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
          2. 如何开启AOF

          a)       appendonly yes         //yes 开启,no 关闭

          # appendfsync always //每次有新命令写时就执行一次fsync 同步

          #这里我们启用 everysec

          appendfsync everysec //每秒 fsync同步 一次

          # appendfsync no      //从不fsync(交给操作系统来处理,可能很久才执行一次fsync),它的参数请大家看redis.conf配置文件详解

               v.            小结:Redis是怎么保存数据的.

          1. redis为了考虑效率,保存数据在内容中.并且考虑数据安全性,还做数据持久化,如果满足保存策略,就会把内存的数据保存到数据rdb文件,还来不及保存那部分数据存放到aof更新日志中。在加载时,把两个数据做一个并集.
          2. Redis的淘汰策略:选择合适的数据进行淘汰

          volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

          volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

          volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

          allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

          allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰

          no-enviction(驱逐):禁止驱逐数据

          redis 确定驱逐某个键值对后,会删除这个数据并,并将这个数据变更消息发布到本地(AOF 持久化)和从机(主从连接)。

          相关文章
          相关标签/搜索
          4987铁算结果开奖结果小说