Redis 5种数据类型——hash(哈希)

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

Hash数据结构
    Redis中的Hash类型可以看成具有String Key和String Value的map容器

    1、往redis库中插入一条hash类型的数据
        redis> hset  key  field  value
        举例:
            redis 127.0.0.1:6379> hset  user001:zhangsan  iphone  6
            (integer) 1
            redis 127.0.0.1:6379> hset  user001:zhangsan  xiaomi  7
            (integer) 1
            redis 127.0.0.1:6379> hset  user001:zhangsan  meizu  8
            (integer) 1
        在redis库中就形成了这样一条数据:

    2、从redis库中获取一条hash类型数据的value
        取出一条hash类型数据中所有field-value对
            redis 127.0.0.1:6379> hgetall  user001:zhangsan
            1) "iphone"
            2) "6"
            3) "xiaomi"
            4) "7"
            5) "meizu"
            6) "8"
        取出hash数据中所有fields
            redis 127.0.0.1:6379> hkeys  user001:zhangsan
            1) "iphone"
            2) "xiaomi"
            3) "meizu"
        取出hash数据中所有的value
            redis 127.0.0.1:6379> hvals  user001:zhangsan
            1) "6"
            2) "7"
            3) "8"
        取出hash数据中一个指定field的值
            redis 127.0.0.1:6379> hget  user001:zhangsan  xiaomi
            "7"
        为hash数据中指定的一个field的值进行增减
            redis 127.0.0.1:6379> hincrby  user001:zhangsan  xiaomi  1
            (integer) 8
        从hash数据中删除一个字段field及其值
            redis 127.0.0.1:6379> hgetall  user001:zhangsan
            1) "iphone"
            2) "6"
            3) "xiaomi"
            4) "7"
            5) "meizu"
            6) "8"
            redis 127.0.0.1:6379> hdel  user001:zhangsan  iphone
            (integer) 1
            redis 127.0.0.1:6379> hgetall  user001:zhangsan
            1) "xiaomi"
            2) "7"
            3) "meizu"
            4) "8"

    应用场景:购物车案例
        public class BuyCartServiceImpl {
            private Jedis jedis = null;
            @Before
            public void init(){
                jedis = new Jedis("192.168.2.70",6379);
            }

            // 添加商品到购物车
            @Test
            public void testAddItemToCart(){
                jedis.hset("cart:user02", "小米沙发", "1");
                jedis.hset("cart:user02", "苹果手机", "2");
                jedis.hset("cart:user02", "格力空调", "4");
                jedis.close();
            }
            // 遍历购物车信息
            @Test
            public void testGetCartInfo(){
                Map<String, String> cart = jedis.hgetAll("cart:user02");
                Set<Entry<String, String>> entrySet = cart.entrySet();
                for(Entry<String, String> ent :entrySet){
                    System.out.println(ent.getKey()+ ":" + ent.getValue());
                }
                jedis.close();
            }
            // 更改购物车
            @Test
            public void editCart(){
                //给蜡烛商品项的数量加1
                jedis.hincrBy("cart:user02", "小米沙发", 1);
                jedis.close();
            }
            // 从购物车中删除商品项
            @Test
            public void delItemFromCart(){
                jedis.hdel("cart:user02", "苹果手机");
                jedis.close();
            }
        }
    从上面可见,用redis做购物车简直太方便了。
展开阅读全文

没有更多推荐了,返回首页