• redis数据结构


     

    redis保存数据的几种类型

    标签: javaredis
     分类:

    Redis保存数据时都有key和value,key和value要么是String类型的,要么是byte[]类型的。在此都是讲的String类型的,所用的jar主要有:

    commons-pool-1.6.jar
    jedis-2.1.0.jar

    1.保存数据之String

    要把一个String保存到redis中,用set(key,value),获取值用get(key)

    2.保存数据之List

    要把一个List保存到redis中,遍历List<String>,逐个调用lpush(key,value),获取值用lrange(key,start,end),start代表开始位置,end代表结束位置,如果为-1则代表到未尾。

    这里lpush的意思是从左边保存,也就是后来居上。

    3.保存数据之Set

    要把一个Set保存到redis中,遍历Set<String>,逐个调用sadd(key,value),获取值用smembers(key)

    4.保丰数据之SortedSet

    SortedSet的意思是他的每一个元素是有顺序的,顺序根据其score来决定,如果socre一样,则按value排序。保存到redis的方法是,对每一个要保存的元素,

    调用zadd(key,score,value),获取值用zrange(key,satrt,end),start代表开始位置,end代表结束位置,如果为-1则代表到未尾。

    5.保存数据之Hash

    要把一个Hash保存到redis中,遍历Map<String,String>,逐个调用hset(key,hashKey,hashValue),获取所有值有hgetAll(key)

    下面来说说怎么保存对象到redis中,我们知道,redis支持的value要么是String类型,要么是byte[]类型,那么思路就是把我们想要保存的对象序列化成String类型或byte[]类型,然后保存之,取值时再反序列化成对象。

    最后粘下我的测试代码:

    [java] view plain copy
     
    1. package com.syz.jedis;  
    2.   
    3. import redis.clients.jedis.JedisPool;  
    4. import redis.clients.jedis.JedisPoolConfig;  
    5.   
    6. public class RedisClient {  
    7.     private static final int MAX_ACTIVE = 20;  
    8.   
    9.     private static final int MAX_IDLE = 5;  
    10.   
    11.     private static final int MAX_WAIT = 1000;  
    12.   
    13.     private static final String HOST = "127.0.0.1";  
    14.   
    15.     private static final int PORT = 6379;  
    16.   
    17.     private static JedisPool jedisPool;  
    18.   
    19.     private RedisClient() {  
    20.     }  
    21.   
    22.     /** 
    23.      * 初始化非切片池 
    24.      */  
    25.     private static void initialPool() {  
    26.         // 池基本配置  
    27.         JedisPoolConfig config = new JedisPoolConfig();  
    28.         config.setMaxActive(MAX_ACTIVE);  
    29.         config.setMaxIdle(MAX_IDLE);  
    30.         config.setMaxWait(MAX_WAIT);  
    31.         jedisPool = new JedisPool(config, HOST, PORT);  
    32.     }  
    33.   
    34.   
    35.     public static JedisPool getJedis() {  
    36.         if (jedisPool == null) {  
    37.             synchronized (RedisClient.class) {  
    38.                 if (jedisPool == null) {  
    39.                     initialPool();  
    40.                 }  
    41.             }  
    42.         }  
    43.         return jedisPool;  
    44.     }  
    45.   
    46. }  

    [java] view plain copy
     
    1. package com.syz.jedis;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.HashMap;  
    5. import java.util.HashSet;  
    6. import java.util.Iterator;  
    7. import java.util.List;  
    8. import java.util.Map;  
    9. import java.util.Map.Entry;  
    10. import java.util.Set;  
    11.   
    12. import redis.clients.jedis.Jedis;  
    13. import redis.clients.jedis.JedisPool;  
    14.   
    15. public class RedisTest {  
    16.     public static void main(String[] args) {  
    17.         JedisPool jedisPool = RedisClient.getJedis();  
    18.         Jedis jedis = jedisPool.getResource();  
    19.         jedis.select(10);  
    20.         try {  
    21.             System.out.println("testString=================begin");  
    22.             testString(jedis);  
    23.             System.out.println("testString=================end");  
    24.             System.out.println("testList=================begin");  
    25.             testList(jedis);  
    26.             System.out.println("testList=================end");  
    27.             System.out.println("testSet=================begin");  
    28.             testSet(jedis);  
    29.             System.out.println("testSet=================end");  
    30.             System.out.println("testSortedSet=================begin");  
    31.             testSortedSet(jedis);  
    32.             System.out.println("testSortedSet=================end");  
    33.             System.out.println("testHash=================begin");  
    34.             testHash(jedis);  
    35.             System.out.println("testHash=================end");  
    36.         }  
    37.         catch (Exception e) {  
    38.             e.printStackTrace();  
    39.         }  
    40.         finally {  
    41.             jedisPool.returnResource(jedis);  
    42.         }  
    43.     }  
    44.   
    45.     private static void testString(Jedis jedis) {  
    46.         String key = "test:string:a";  
    47.         // 为了保持多次测试结果一样,每次开始时都删除  
    48.         jedis.del(key);  
    49.         String value = "hello redis";  
    50.         jedis.set(key, value);  
    51.         String val = jedis.get(key);  
    52.         System.out.println(val);  
    53.         // 结果:hello redis  
    54.     }  
    55.   
    56.     private static void testList(Jedis jedis) {  
    57.         String key = "test:list:a";  
    58.         // 为了保持多次测试结果一样,每次开始时都删除  
    59.         jedis.del(key);  
    60.         List<String> values = new ArrayList<>();  
    61.         for (int i = 0; i < 10; i++) {  
    62.             char c = (char) (65 + i);  
    63.             values.add(String.valueOf(c));  
    64.         }  
    65.         for (int i = 0; i < values.size(); i++) {  
    66.             jedis.lpush(key, values.get(i));  
    67.         }  
    68.         List<String> val = jedis.lrange(key, 0, -1);  
    69.         System.out.println(val);  
    70.         // 结果:[J, I, H, G, F, E, D, C, B, A]  
    71.     }  
    72.   
    73.     private static void testSet(Jedis jedis) {  
    74.         String key = "test:set:a";  
    75.         // 为了保持多次测试结果一样,每次开始时都删除  
    76.         jedis.del(key);  
    77.         Set<String> values = new HashSet<>();  
    78.         for (int i = 0; i < 10; i++) {  
    79.             char c = (char) (65 + i);  
    80.             values.add(String.valueOf(c));  
    81.         }  
    82.         Iterator<String> ite = values.iterator();  
    83.         while (ite.hasNext()) {  
    84.             String value = ite.next();  
    85.             jedis.sadd(key, value);  
    86.         }  
    87.         Set<String> val = jedis.smembers(key);  
    88.         System.out.println(val);  
    89.         // 结果:[D, E, F, G, A, B, C, H, I, J]  
    90.     }  
    91.   
    92.     private static void testSortedSet(Jedis jedis) {  
    93.         String key = "test:sortedset:a";  
    94.         // 为了保持多次测试结果一样,每次开始时都删除  
    95.         jedis.del(key);  
    96.         String[] values = { "C", "B", "G", "D", "d" };  
    97.         jedis.zadd(key, 10, "E");  
    98.         for (int i = 0; i < values.length; i++) {  
    99.             jedis.zadd(key, i + 10, values[i]);  
    100.         }  
    101.         jedis.zadd(key, 10, "F");  
    102.         Set<String> val = jedis.zrange(key, 0, -1);  
    103.         System.out.println(val);  
    104.         // 结果:[C, E, F, B, G, D, d]  
    105.     }  
    106.   
    107.     private static void testHash(Jedis jedis) {  
    108.         String key = "test:hash:a";  
    109.         // 为了保持多次测试结果一样,每次开始时都删除  
    110.         jedis.del(key);  
    111.         Map<String, String> values = new HashMap<>();  
    112.         for (int i = 0; i < 10; i++) {  
    113.             String s = String.valueOf((char) (i + 'A'));  
    114.             values.put(s, s + "_val");  
    115.         }  
    116.         Iterator<Entry<String, String>> ite = values.entrySet().iterator();  
    117.         while (ite.hasNext()) {  
    118.             Entry<String, String> entry = ite.next();  
    119.             String k = entry.getKey();  
    120.             String v = entry.getValue();  
    121.             jedis.hset(key, k, v);  
    122.         }  
    123.         Map<String, String> val = jedis.hgetAll(key);  
    124.         System.out.println(val);  
    125.         // 结果:{D=D_val, E=E_val, F=F_val, G=G_val, A=A_val, B=B_val, C=C_val,  
    126.         // H=H_val, I=I_val, J=J_val}  
    127.     }  
    128. }  
  • 相关阅读:
    实例教学在MySQL中若何导出整个数据库
    在Linux下Turbomail简易快捷的装置方式
    Fedora下编译mitscheme
    Fedora 9可以不敌RedHat 9光辉
    实用伎俩:Ubuntu Linux 8.04设置与优化
    Linux下给WordPress建设伪静态
    红旗桌面版本最新使用要领和题目问题解答100例5
    知识管理系统红旗Linux/KM.Center
    python 虚拟环境的安装
    python 闭包
  • 原文地址:https://www.cnblogs.com/javatk/p/7225860.html
Copyright © 2020-2023  润新知