Redis简单理解及使用

Redis是基于内存为介质的缓存数据库、非关系型数据库    默认端口:6379

访问数据量少于百万时 一般用不到redis,redis是由意大利人所写  同时提供了16个服务器(0-15)通过select x 选择 各个之间数据不共享  默认为0服务器

特点:

        因为使用内存,继承的内存的优点 读写速度快 异步持久化

        非关系型数据库,采用Key-Value 形式进行存储  Value形式有五种(String、Hash、List、Set、ZSet [有序集合])

        与memcache 不同  redis 可以有持久化操作 因此 redis可以当数据库使用。两种持久化方式(快照模式、AOF日志追加)

        主从模式 主服务器数据共享到从服务器。  哨兵模式 :当主服务器出现宕机 会自动选择从服务器中的一个成为主服务器 

        缓存过程  第一次从数据库取到数据放在 内存上的 redis中   第二次取时 可以直接从redis中取  减少了与服务器之间的IO 

判断 客户端与服务器端是否连接成功  ping -pong

             

设置客户端与服务器端连接密码  默认没有 如果设置密码后必须验证密码后才可以操作

    

Value五种形式使用

        String  返回OK

        

       Hash 返回OK

        

       List 返回受影响的行数    由于是链表  有左边插入 lpush  和  rpush  同数据结构同   有序可重复  获取值时根据下标

       

       Set 返回受影响的行数  无序不可重复 

       

      Zset 返回受影响的行数  有序不可重复  额外增加一个score 的key负责排序   获取是根据成绩范围选择

       


设置 主从 服务器  在redis.windows.conf下配置

      主服务器  地址127.0.0.1  端口 6379   可以自己设置

      从服务器  地址不变  端口 6380 或者其他自己设置     设置 slave 127.0.0.1 6379 (主服务器的地址和端口)bind  127.0.0.1


redis持久化操作:

     RDB (快照):将数据完成后  输入save 就会启动一个fork()的子进程  将数据存储到dump.rdb文件中 ,好处便于备份和恢复,缺点是 设置了几个规则才会启动该写入(比如每五分钟写一次),当数据量过大时 可能会对客户端请求停止处理 ,AOF不会有这样的问题

     AOF(日志追加):在redis.window.conf文件中配置   

              # 是否开启AOF,默认关闭(no)appendonly yes

              # 指定 AOF 文件名appendfilename appendonly.aof

              # Redis支持三种不同的刷写模式:

              # appendfsync always #每次收到写命令就立即强制写入磁盘,是最有保证的完全的持久化,但速度也是最慢的,一般不推荐使用。

              #appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。

             # appendfsync no #完全依赖OS的写入,一般为30秒左右一次,性能最好但是持久化最没有保证,不被推荐。


 Redis事务管理     没有事务回滚机制  如果中间出现问题 只有出现问题的值存放不进  其他正常

                                                                                                                                 


Jedis : java 与 redis连接的API  ,为了实现java与redis之间进行操作

 开启redis 服务器

 添加依赖

<dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.9.3</version>
    </dependency>

 Java 类  换个方式进行操作

@Test
    public void jedisTest(){
        Jedis jedis = new Jedis("127.0.0.1",6379);

        System.out.println(jedis.ping());

        System.out.println("----------string-----------");
        jedis.set("hello","jedis");
        System.out.println(jedis.get("hello"));

        System.out.println("----------hash-----------");
        Map<String,String> map0 = new HashMap<>();
        map0.put("name","wang");
        map0.put("sex","nan");
        jedis.hmset("hash",map0);
        Map<String, String> map = jedis.hgetAll("hash");
        Set<String> strings = map.keySet();
        for (String string : strings) {
            System.out.println(map.get(string));
        }

        System.out.println("----------list-----------");
        jedis.lpush("list","wang","liu","li");
        List<String> list = jedis.lrange("list", 0, 2);
        for (String s : list) {
            System.out.println(s);
        }

        System.out.println("----------set-----------");
        jedis.sadd("set","wang","li");
        Set<String> set = jedis.smembers("set");
        for (String s : set) {
            System.out.println(s);
        }

        System.out.println("----------zset-----------");
        jedis.zadd("zset",80,"java");
        jedis.zadd("zset",70,"html5");
        Set<String> zset = jedis.zrangeByScore("zset", 0, 100);
        for (String s : zset) {
            System.out.println(s);
        }
    }
发布了47 篇原创文章 · 获赞 9 · 访问量 1717

猜你喜欢

转载自blog.csdn.net/Wang________/article/details/105715939