一、Redis 哈希(Hash)
Redis hash 是一个 string 类型的 field(字段)和 value(值)的映射表,hash 特地适宜用于存储对象。
Redis 中每个 hash 能够存储 232 – 1 键值对(40 多亿)。
简略示例:
127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000 OK 127.0.0.1:6379> HGETALL runoobkey 1) "name" 2) "redis tutorial" 3) "description" 4) "redis basic commands for caching" 5) "likes" 6) "20" 7) "visitors" 8) "23000"
二、Hash 类型的操作命令
1、hset
hset:设置值。格局是:hset hash 的 key 项的 key 项的值
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
/**
* redis 中对于 hash 类型的: hset 操作示例
* hset:设置值。格局是:hset hash 的 key 项的 key 项的值
*/
public class Hash_hset_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
/**
* 示例 1:hset hash 的 key 项的 key 项的值
*/
jedis.hset("myhash","id","3");
jedis.hset("myhash","name","xiaohong");
jedis.hset("myhash","age","13");
}
}
2、hmset
hmset:同时设置多对值。格局是:hmset hash 的 key 项的 key 项的值。(项的 key 和项的值能够多对)
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;
/**
* redis 中对于 hash 类型的: hmset 操作示例
* hmset:同时设置多对值。格局是:hmset hash 的 key 项的 key 项的值。(项的 key 和项的值能够多对)*/
public class Hash_hmset_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
/**
* 示例 1:hmset hash 的 key 项的 key 项的值。(项的 key 和项的值能够多对)*/
Map<String,String> map = new HashMap<>();
map.put("id","1");
map.put("name","dongdong");
map.put("age","3");
jedis.hmset("myhash",map);
}
}
3、hget
hget:获取值。格局是:hget hash 的 key 项的 key
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
/**
* redis 中对于 hash 类型的: hget 操作示例
* hget:获取值。格局是:hget hash 的 key 项的 key
*/
public class Hash_hget_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
/**
* 示例 1:hget hash 的 key 项的 key
*/
String id = jedis.hget("myhash", "id");
String name = jedis.hget("myhash", "name");
String age = jedis.hget("myhash", "age");
System.out.println(String.format("id = %s, name = %s, age = %s",id,name,age));
}
}
4、hmget
hmget:同时获取多对值。格局是:hmget hash 的 key 项的 key。(项的 key 能够有多个)
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
import java.util.List;
/**
* redis 中对于 hash 类型的: hmget 操作示例
* hmget:同时获取多对值。格局是:hmget hash 的 key 项的 key。(项的 key 能够有多个)*/
public class Hash_hmget_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
/**
* 示例 1:hmget hash 的 key 项的 key。(项的 key 能够有多个)*/
List<String> hmget = jedis.hmget("myhash", "id", "name", "age");
System.out.println("hmget =" + hmget);
}
}
5、hgetall
hgetall:获取该 key 下所有的值。格局是:hgetall hash 的 key
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
import java.util.Map;
/**
* redis 中对于 hash 类型的: hgetall 操作示例
* hgetall:获取该 key 下所有的值。格局是:hgetall hash 的 key
*/
public class Hash_hgetall_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
/**
* 示例 1:hgetall hash 的 key
*/
Map<String, String> myhash = jedis.hgetAll("myhash");
System.out.println("myhash =" + myhash);
}
}
6、hdel
hdel:删除某个项。格局是:hdel hash 的 key 项的 key
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
import java.util.Map;
/**
* redis 中对于 hash 类型的: hdel 操作示例
* hdel:删除某个项。格局是:hdel hash 的 key 项的 key
*/
public class Hash_hdel_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
Map<String, String> myhash = jedis.hgetAll("myhash");
System.out.println("myhash =" + myhash);
/**
* 示例 1:hdel hash 的 key 项的 key
*/
Long hdel = jedis.hdel("myhash", "age");
System.out.println("hdel =" + hdel);
Map<String, String> myhash1 = jedis.hgetAll("myhash");
System.out.println("myhash1 =" + myhash1);
}
}
7、hlen
hlen:获取 key 外面的键值对数量。格局是:hlen hash 的 key
操作如下:
java 示例代码
import redis.clients.jedis.Jedis;
import java.util.Map;
/**
* redis 中对于 hash 类型的: hlen 操作示例
* hlen:获取 key 外面的键值对数量。格局是:hlen hash 的 key
*/
public class Hash_hlen_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
Map<String, String> myhash = jedis.hgetAll("myhash");
System.out.println("myhash =" + myhash);
/**
* 示例 1:hlen hash 的 key
*/
Long hlen = jedis.hlen("myhash");
System.out.println("hlen =" + hlen);
}
}
8、hexists
hexists:判断键值是否存在。格局是:hexists hash 的 key 项的 key
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
import java.util.Map;
/**
* redis 中对于 hash 类型的: hexists 操作示例
* hexists:判断键值是否存在。格局是:hexists hash 的 key 项的 key
*/
public class Hash_hexists_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
Map<String, String> myhash = jedis.hgetAll("myhash");
System.out.println("myhash =" + myhash);
/**
* 示例 1:hexists hash 的 key 项的 key
*/
Boolean hexists = jedis.hexists("myhash", "id");
System.out.println("hexists =" + hexists);
}
}
9、hkeys
hkeys:获取所有的 item 的 key, 格局是:hkeys hash 的 key
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
import java.util.Map;
import java.util.Set;
/**
* redis 中对于 hash 类型的: hexists 操作示例
* hkeys:获取所有的 item 的 key, 格局是:hkeys hash 的 key
*/
public class Hash_hkeys_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
Map<String, String> myhash = jedis.hgetAll("myhash");
System.out.println("myhash =" + myhash);
/**
* 示例 1:hkeys hash 的 key
*/
Set<String> hkeys = jedis.hkeys("myhash");
System.out.println("hkeys =" + hkeys);
}
}
10、hvals
hvals:获取所有的 item 的值,格局是:hvals hash 的 key
操作如下:
java 示例代码:
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
/**
* redis 中对于 hash 类型的: hexists 操作示例
* hvals:获取所有的 item 的值,格局是:hvals hash 的 key
*/
public class Hash_hvals_operation {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);
Map<String, String> myhash = jedis.hgetAll("myhash");
System.out.println("myhash =" + myhash);
/**
* 示例 1:hvals hash 的 key
*/
List<String> hvals = jedis.hvals("myhash");
System.out.println("hvals =" + hvals);
}
}
相干文章:
Redis 哈希 (Hash) 相干命令
Java 中 Redis 对 Hash 类型的操作命令