zoukankan      html  css  js  c++  java
  • redis

    参考转载自:https://blog.csdn.net/chengqiuming/article/details/79114559

    https://blog.csdn.net/weixin_41454168/article/details/81390736

    *)介绍

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。对这些类型提供了对应的存取提供了对应方法。很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。

    与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

    *)在cmd运行Redis

    进入:以管理员身份运行cmd
    运行:redis-server.exe
    以管理员身份运行一个新的cmd,上一个不要关闭
    运行:redis-cli.exe -h 127.0.0.1 -p 6379
    注:设置中文字符集则运行:redis-cli --raw

    1、String 

    set name "runoob"

    get name
    "runoob"

    上述例子中,name为键,runoob为值
    一个键最大能存512MB

    2、Hash

    hmset myhash field1 "hello" field2 "world" 

    hget myhash field1        取出了“hello”
    hget myhash field2        取出了“world”

    上述例子中,创建了 myhash 这个Hash 同时用 hmset 存了两个键值对,用 hget 根据 myhash 和 键 可以将值取出来(存可以一起,取只能一个个)
    一个hash可以存2的23次方减一的键值对(约40多亿)


    3、List

    lpush runoob 123
    lpush runoon 234 345

    lrange runoob 0 2
    “345” 0
    “234” 1
    “123” 2

    上述例子中,存可以存一到多个,取可以根据存的顺序取出来,,根据给出的下标集合,来取
    一个List可以存2的23次方减一个值(约40多亿)


    4、Set

    sadd runoob rabitmq
    sadd runoob mongodb

    smembers runoob
    "rabitmq"
    "mongodb"

    上述例子中, sadd 是存, smembers 是取
    set 是无序集合,每个值都只能存一次,再存无效

    5、zset

    zadd runoob 0 redis
    zadd runoob 0 mongodb

    zrangebyscore runoob 0 10

    上述例子中, zadd 是存,zrangebyscore 是取,根据给出的下标集合,来取
    zset是有序集合,每个元素都会关联一个double类型的分数,来为集合进行排序,double值可以从复

    *)在java中实现使用Redis

    1、导入

    commons-pool2-2.4.2.jar

    jedis-2.9.0.jar

    下载链接:https://pan.baidu.com/s/1qik6cLVJ_d-37LSgA0BJEQ

    2、实现 

    下面的代码中,实现了String、Hash、List、Set、zset的存取,还有一个删除例子

     1 import java.util.ArrayList;
     2 import java.util.HashMap;
     3 import java.util.List;
     4 import java.util.Map;
     5 
     6 import redis.clients.jedis.Jedis;
     7 import redis.clients.jedis.JedisPool;
     8 import redis.clients.jedis.JedisPoolConfig;
     9 
    10 public class MainRedis {
    11     
    12     private static JedisPool pool;
    13     private static Jedis jedis;
    14     
    15     public static void main(String[] argn){
    16         // 初始化Redis连接池
    17         pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1");
    18         // 从连接池中获取一个连接
    19         jedis = pool.getResource();
    20         
    21         //存取 String
    22         jedis.set("name", "runoob");
    23         System.out.println(jedis.get("name"));
    24         System.out.println("");
    25         
    26         
    27         
    28         //存取Hash
    29         Map<String, String> map = new HashMap<>();
    30         map.put("fineld", "one");
    31         map.put("this", "tokin");
    32         map.put("like", "baby");
    33         map.put("yes", "oh no");
    34         jedis.hmset("myhash", map);
    35         
    36         List<String> list = new ArrayList<String>();
    37         list.add("fineld");
    38         list.add("this");
    39         list.add("like");
    40         list.add("yes");
    41         list.add("no");//hash查询没有的返回空
    42         for(int i=0;i<list.size();i++){
    43             System.out.println(jedis.hget("myhash", list.get(i)));
    44         }
    45         System.out.println("");
    46         
    47         
    48         
    49         
    50         //存取List
    51         List<String> list2 = new ArrayList<>();
    52         list2.add("花花世界");
    53         list2.add("Illusory world");
    54         list2.add("Illusions are true");
    55         list2.add("Eternal");
    56         list2.add("Come on"); 
    57         for(int i=0;i<list2.size();i++){
    58             jedis.lpush("worlds", list2.get(i));
    59         }
    60         System.out.println(jedis.lrange("worlds", 0, 10));
    61         System.out.println("");
    62         
    63         
    64         
    65         //存取Set
    66         List<String> list3 = new ArrayList<>();
    67         list3.add("存取Set");
    68         list3.add("试试same");
    69         list3.add("same");//从输出可以看出,不能重复存
    70         list3.add("same");
    71         list3.add("nice");
    72         for(int i=0;i<list3.size();i++){
    73             jedis.sadd("same", list3.get(i));
    74         }
    75         System.out.println(jedis.smembers("same"));
    76         System.out.println("");
    77         
    78         
    79         
    80         //存取zset(sorted set)
    81         Map<String,Double> map2 = new HashMap<>();
    82         map2.put("第一", 0.0);
    83         map2.put("第二", 0.0);
    84         map2.put("第三", 0.0);
    85         map2.put("第四", 0.0); 
    86         map2.put("第五", 0.0);
    87         for(int i=0;i<map2.size();i++){
    88             jedis.zadd("ranking", map2); 
    89             //jedis.del("ranking");//清空数据
    90         }
    91         System.out.println(jedis.zrangeByScore("ranking", 0, 10));
    92         
    93     }
    94     
    95 }
    View Code
  • 相关阅读:
    第1年4月22日 IBInspectable巧妙用法 cornerRadius
    第1年4月15日
    第1年4月9日 Domain: com.apple.dt.MobileDeviceErrorDomain
    第1年4月7日 活体检测
    GPS 波段信号范围
    tomcat远程调试
    JdbcTemplate或hibernate动态建表
    jdk动态代理失效,事务自调用失效
    Tomcat 访问静态资源出现中文乱码解决办法(转)
    SQL Server 查看死锁进程(转)
  • 原文地址:https://www.cnblogs.com/mySummer/p/10699762.html
Copyright © 2011-2022 走看看