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

 

posted @ 2019-04-13 08:51  夏天的尾巴%  阅读(161)  评论(0)    收藏  举报