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做购物车简直太方便了。