Redis数据结构之Hash
概述
Redis中的Hashes类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。
Hash相关功能(Redis客户端命令)
1)hset key field value:
为指定的key设定field/value对(键值对)。
2)hgetall key:
获取key中的所有filed-vaule
3)hsetnx key field value
如果key不存在进行插入,如果key和field都存在不进行插入
4)hget key field:
返回指定的key中的field的值
5)hmset key fields:
设置key中的多个filed/value
6)hmget key fileds:
获取key中的多个filed的值
7)hexists key field:
判断指定的key中的filed是否存在
8)hlen key:
获取key所包含的field的数量
9)hincrby key field increment:
设置key中filed的值增加increment,如:age增加20
10)hdel key field1 field2…
删除指定的key中的指定的字段的和对应的值
11)hkeys key
获取指定的key中所有的字段
12)hvals key
获取指定的key中所有的value
13)hincrbyfloat key field value
给指定的字段添加浮点数的值
Hash相关功能(Jedis客户端API)
Redis java 客户端jedis
java测试代码如下,(maven项目的创建与pom.xml配置,还有jedis对象的创建都在redis数据结构之String)
/**
*Hash类型数据的API测试
*/
@Test
public void testHash(){
jedis.hset("jedis-h-key-01","name","zhangsan");
String name = jedis.hget("jedis-h-key-01", "name");
System.out.println(name);
HashMap<String, String> fields = new HashMap<String, String>();
fields.put("password","123");
fields.put("age","18");
jedis.hmset("jedis-h-key-01",fields);
Set<String> hkeys = jedis.hkeys("jedis-h-key-01");
System.out.println("所有的key如下:");
for(String key :hkeys){
System.out.println(key);
}
List<String> hvals = jedis.hvals("jedis-h-key-01");
System.out.println("所有的val如下:");
for(String val:hvals){
System.out.println(val);
}
System.out.println("一次性取出所有的key-value对:");
Map<String, String> hgetAll = jedis.hgetAll("jedis-h-key-01");
Set<Map.Entry<String, String>> entrySet = hgetAll.entrySet();
for (Map.Entry<String,String> ent:entrySet){
System.out.println(ent.getKey()+":"+ent.getValue());
}
}