学习 Redis Hash(哈希表)
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.ScanOptions;
import org.springframework.data.redis.core.ScanOptions.ScanOptionsBuilder;
public class TestRedisHash {
private static JedisConnectionFactory getJedisConnectionFactory() {
JedisConnectionFactory jcf = new JedisConnectionFactory();
jcf.setHostName("127.0.0.1");
jcf.setPort(6379);
jcf.setPassword("123");
jcf.afterPropertiesSet();
return jcf;
}
private static RedisConnection getRedisConnection() {
return getJedisConnectionFactory().getConnection();
}
public static void main(String[] args) {
RedisConnection rc = getRedisConnection();
//HSET
boolean hSet = rc.hSet("set1".getBytes(), "a".getBytes(), "b".getBytes());
System.out.println(hSet);
//HEXISTS
boolean hExists = rc.hExists("set".getBytes(), "a".getBytes());
System.out.println(hExists);
//HGET
byte[] hGet = rc.hGet("set".getBytes(), "a".getBytes());
System.out.println(new String(hGet));
//HGETALL
Map<byte[], byte[]> hGetAll = rc.hGetAll("set".getBytes());
Set<Entry<byte[], byte[]>> set = hGetAll.entrySet();
Iterator<Entry<byte[], byte[]>> ite = set.iterator();
while (ite.hasNext()) {
Entry<byte[], byte[]> entry = ite.next();
System.out.println(new String(entry.getKey()) + " " + new String(entry.getKey()));
}
Set<byte[]> keySet = hGetAll.keySet();
Iterator<byte[]> iter = keySet.iterator();
while (iter.hasNext()) {
byte[] key = iter.next();
System.out.println(new String(key) + " " + new String(hGetAll.get(key)));
}
//HKEYS
Set<byte[]> hKeys = rc.hKeys("books".getBytes());
Iterator<byte[]> itrKeys = hKeys.iterator();
while (itrKeys.hasNext()) {
System.out.println(new String(itrKeys.next()));
}
//HVALS
List<byte[]> hVals = rc.hVals("books".getBytes());
for (byte[] value : hVals) {
System.out.println(new String(value));
}
//HDEL
long hDel = rc.hDel("testdel".getBytes(), "a".getBytes());
System.out.println(hDel);
//HINCRBY
long hIncrBy = rc.hIncrBy("number".getBytes(), "b".getBytes(), 2);
System.out.println(hIncrBy);
//HINCRBYFLOAT
double hIncrByFloat = rc.hIncrBy("dounum".getBytes(), "b".getBytes(), 2.0e2);
System.out.println(hIncrByFloat);
//HLEN
long hLen = rc.hLen("seft".getBytes());
System.out.println(hLen);
//HMSET
Map<byte[], byte[]> books = new HashMap<byte[], byte[]>();
books.put("001".getBytes(), "Redis".getBytes());
books.put("002".getBytes(), "Mongodb".getBytes());
books.put("003".getBytes(), "Mysql".getBytes());
rc.hMSet("books".getBytes(), books);
//HMGET
List<byte[]> hMget = rc.hMGet("books".getBytes(), "003".getBytes(), "002".getBytes(), "aa".getBytes());
for (byte[] value : hMget) {
if (value != null) {
System.out.println(new String(value));
}
}
//HSETNX
boolean hSetNX = rc.hSetNX("setnx".getBytes(), "hello".getBytes(), "world".getBytes());
System.out.println(hSetNX);
//HSCAN
ScanOptionsBuilder sob = ScanOptions.scanOptions().count(1).match("*1");
ScanOptions options = sob.build();
options.getCount();
Cursor<Entry<byte[], byte[]>> hScan = rc.hScan("books".getBytes(), options);
while (hScan.hasNext()) {
Entry<byte[], byte[]> entry = hScan.next();
System.out.println(new String(entry.getKey()) + " " + new String(entry.getValue()));
}
}
}