redis的客户端命令和redis template的java命令的对照表
2022/2/20 19:33:10
本文主要是介绍redis的客户端命令和redis template的java命令的对照表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- Redis 数据类型
- 一、Redis 字符串(String)
- 二、Redis 哈希(Hash)
- 三、Redis 列表(List)
- 四、Redis 集合(Set)
- 五、Redis 有序集合(sorted set)
Redis 数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
一、Redis 字符串(String)
ValueOperations valueOperations = redisTemplate.opsForValue(); /**Set void*/ valueOperations.set("keyDemo","hello"); /**Set void 同一个key,会对原有的value进行复写,该set可以设置失效时间*/ valueOperations.set("keyDemo","hello word",30, TimeUnit.SECONDS); /**Set void(复写) 从上一个值的6下标开始复写*/ valueOperations.set("keyDemo","redis",6); //结果: hello redis /**如果key已经存在,则该值追加到字符串的末尾。 * 如果键不存在,则它被创建并设置为空字符串*/ valueOperations.append("keyDemo"," By"); valueOperations.append("keyDemo1","Hello"); // keyDemo 结果: hello redis By // keyDemo1 结果: Hello /**size Long 返回key所对应的value的长度*/ System.out.println("****5key****:"+valueOperations.size("keyDemo")); // 结果:14 /**getAndSet String 先取Key对应的值,再进行赋值*/ System.out.println("****6key****:"+valueOperations.getAndSet("keyDemo","String Type is End!")); // 结果 hello redis By System.out.println("****7key****:"+valueOperations.get("keyDemo")); // 结果 String Type is End!
二、Redis 哈希(Hash)
/**设置过期时间*/ redisTemplate.expire("redisHash",10, TimeUnit.SECONDS); HashOperations hashOperations = redisTemplate.opsForHash(); /**void put(H key, HK hashKey, HV value); 设置散列hashKey的值*/ hashOperations.put("redisHash","name","666"); hashOperations.put("redisHash","age",26); hashOperations.put("redisHash","class","6"); //结果:结果:{age=26, class=6, name=666} /**void putAll(H key, Map<? extends HK, ? extends HV> m); 使用m中提供的多个散列字段设置到key对应的散列表中*/ Map<String,Object> testMap = new HashMap(); testMap.put("name","666"); testMap.put("age",27); testMap.put("class","1"); hashOperations.putAll("redisHash1",testMap); System.out.println(hashOperations.entries("redisHash1")); //结果:结果:{class=1, name=jack, age=27} /**Set<HK> keys(H key); 获取key所对应的散列表的key*/ System.out.println(hashOperations.keys("redisHash")); //结果:redisHash所对应的散列表为{class=1, name=666, age=27} //结果:结果:[name, class, age] /** * HV get(H key, Object hashKey); */ System.out.println(hashOperations.get("redisHash","age")); //结果:结果:26 /** * Boolean hasKey(H key, Object hashKey); * 确定哈希hashKey是否存在 */ System.out.println(hashOperations.hasKey("redisHash","666")); //结果:true System.out.println(hashOperations.hasKey("redisHash","777"));//结果:false /**List<HV> values(H key); 获取整个哈希存储的值根据密钥*/ System.out.println(hashOperations.values("redisHash")); //结果:[666, 26, 6] /**Map<HK, HV> entries(H key); 获取整个哈希存储根据密钥*/ System.out.println(hashOperations.entries("redisHash")); //结果:{age=26, class=6, name=666} /** Cursor<Map.Entry<HK, HV>> scan(H key, ScanOptions options); 使用Cursor在key的hash中迭代,相当于迭代器。*/ Cursor<Map.Entry<Object, Object>> curosr = hashOperations.scan("redisHash", ScanOptions.NONE); while(curosr.hasNext()){ Map.Entry<Object, Object> entry = curosr.next(); System.out.println(entry.getKey()+":"+entry.getValue()); } //结果:age:27 class:6 name:666 /** * Long delete(H key, Object... hashKeys); * 删除给定的哈希hashKeys */ System.out.println(hashOperations.delete("redisHash","name")); System.out.println(hashOperations.entries("redisHash")); //结果:1 //结果:{class=6, age=26}
三、Redis 列表(List)
/**设置过期时间*/ redisTemplate.expire("redisHash",10, TimeUnit.SECONDS); ListOperations listOperations = redisTemplate.opsForList(); /**leftPush Long * 将指定的值插入存储在键的列表的头部。(从左边插入)*/ Long aLong = listOperations.leftPush("listKey","kyee"); // 返回1 Long aLong1 = listOperations.leftPush("listKey","shinow");//返回2 Long aLong2 = listOperations.leftPushAll("listKey", "aa", "bb", "cc"); /** leftPushAll(K key, V... values) Long; 批量把一批参数插入到列表中 leftPushAll(Collection collection) 把一个集合插入List表 */ String[] str = {"1","2","3"}; List<String> strings = Arrays.asList(str); Long aLong3 = listOperations.leftPushAll("listKey", "aa", "bb", "cc"); Long aLong4 = listOperations.leftPushAll("listKey", strings); /**leftPush && leftPushAll 两个命令和上述类似,不做介绍*/ /** set(K key, long index, V value) 在列表中index的位置设置并覆盖value值*/ listOperations.set("listKey",2,"test"); //结果:kyee,shinow,test,bb,cc, ..... /**Long remove(K key, long count, Object value); * count<0 删除从尾到头的第一个等于value的元素 * count=0 删除所有等于value的元素 * count>0 删除从头到尾第一个等于value的元素 * */ Long remove0 = listOperations.remove("listKey", 0, "aa"); Long remove1 = listOperations.remove("listKey", 1, "aa"); Long remove2 = listOperations.remove("listKey", -1, "aa"); /**Object index(K key, long index); * 根据下表获取列表中的值*/ listOperations.index("listKey",2); /**Object leftPop(K key); 弹出最左边的元素,弹出之后该值在列表中将不复存在*/ listOperations.leftPop("listKey"); /** * leftPop(K key, long timeout, TimeUnit unit) *移除集合中左边的元素在等待的时间里,如果超过等待的时间仍没有元素则退出。*/ listOperations.leftPop("listKey",10,TimeUnit.SECONDS); /**rightPop 两个命令和上述类似,不做介绍*/
四、Redis 集合(Set)
SetOperations setOperations = redisTemplate.opsForSet(); /**Long add(K key, V... values); 无序集合中添加元素,返回添加个数 也可以直接在add里面添加多个值 如:template.opsForSet().add("setTest","aaa","bbb")*/ String[] strs= new String[]{"str1","str2"}; System.out.println(setOperations.add("setTest", strs)); //结果:2 /**Long remove(K key, Object... values); 移除集合中一个或多个成员*/ System.out.println(setOperations.remove("setTest",strs)); //结果:2 /**V pop(K key); 移除并返回集合中的一个随机元素*/ System.out.println(setOperations.pop("setTest")); System.out.println(setOperations.members("setTest")); //结果:bbb //结果: [aaa, ccc] /**Boolean move(K key, V value, K destKey); 将 member 元素从 source 集合移动到 destination 集合*/ setOperations.move("setTest","aaa","setTest2"); System.out.println(setOperations.members("setTest")); System.out.println(setOperations.members("setTest2")); //结果:[ccc] //结果:[aaa] /**Cursor<V> scan(K key, ScanOptions options); 遍历set*/ Cursor<Object> curosr = setOperations.scan("setTest", ScanOptions.NONE); while(curosr.hasNext()){ System.out.println(curosr.next()); }
五、Redis 有序集合(sorted set)
ZSetOperations zSetOperations = redisTemplate.opsForZSet(); /** * Boolean add(K key, V value, double score); * 新增一个有序集合,存在的话为false,不存在的话为true * ZSet内部是按照score排序 * */ zSetOperations.add("Z-set1","abc",2); /**Long add(K key, Set<TypedTuple<V>> tuples);*/ ZSetOperations.TypedTuple<Object> objectTypedTuple1 = new DefaultTypedTuple<>("zset-5",9.6); ZSetOperations.TypedTuple<Object> objectTypedTuple2 = new DefaultTypedTuple<>("zset-6",9.9); Set<ZSetOperations.TypedTuple<Object>> tuples = new HashSet<ZSetOperations.TypedTuple<Object>>(); tuples.add(objectTypedTuple1); tuples.add(objectTypedTuple2); System.out.println(zSetOperations.add("zset1",tuples)); System.out.println(zSetOperations.range("zset1",0,-1)); //结果:[zset-1, zset-2, zset-3, zset-4, zset-5, zset-6] /**Long size(K key); 获取有序集合的成员数,内部调用的就是zCard方法*/ System.out.println(zSetOperations.size("zset1")); //结果:6 /**Long remove(K key, Object... values); 从有序集合中移除一个或者多个元素*/ System.out.println(zSetOperations.range("zset1",0,-1)); System.out.println(zSetOperations.remove("zset1","zset-6")); System.out.println(zSetOperations.range("zset1",0,-1)); //结果:[zset-1, zset-2, zset-3, zset-4, zset-5, zset-6] //结果: 1 //结果:[zset-1, zset-2, zset-3, zset-4, zset-5] /**Long rank(K key, Object o); 返回有序集中指定成员的排名,其中有序集成员按分数值递增(从小到大)顺序排列*/ System.out.println(zSetOperations.range("zset1",0,-1)); System.out.println(zSetOperations.rank("zset1","zset-2")); //结果:[zset-2, zset-1, zset-3, zset-4, zset-5] //结果:0 表明排名第一 /**Cursor<TypedTuple<V>> scan(K key, ScanOptions options); 遍历zset*/ Cursor<ZSetOperations.TypedTuple<Object>> cursor = zSetOperations.scan("zzset1", ScanOptions.NONE); while (cursor.hasNext()){ ZSetOperations.TypedTuple<Object> item = cursor.next(); System.out.println(item.getValue() + ":" + item.getScore()); } //结果:zset-1:1.0 //结果:zset-2:2.0 //结果:zset-3:3.0 //结果:zset-4:6.0 /**Long count(K key, double min, double max); 通过分数返回有序集合指定区间内的成员个数*/ System.out.println(zSetOperations.rangeByScore("zset1",0,5)); System.out.println(zSetOperations.count("zset1",0,5)); //结果:[zset-2, zset-1, zset-3] //结果: 3 /**Double score(K key, Object o); 获取指定成员的score值*/ System.out.println(zSetOperations.score("zset1","zset-1")); //结果:2.2 /**Long removeRange(K key, long start, long end); 移除指定索引位置的成员,其中有序集成员按分数值递增(从小到大)顺序排列*/ System.out.println(zSetOperations.range("zset2",0,-1)); System.out.println(zSetOperations.removeRange("zset2",1,2)); System.out.println(zSetOperations.range("zset2",0,-1)); //结果:[zset-1, zset-2, zset-3, zset-4] //结果:2 //结果:[zset-1, zset-4]
这篇关于redis的客户端命令和redis template的java命令的对照表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行