RedisTemplate - 常用集合之opsFor系列

链接

一、opsForValue

简单的Key-Value操作

1、set(K key, V value)

该方法是向Redis新增一个key-value,由方法参数可知k-v可以是泛型,也就是说我们k-v不一定要是传统的String-String,还可以是Object-Object。

redisTemplate.opsForValue().set("lcy",'lcy');
User user1 = new User("柳成荫",22);
User user2 = new User("柳成荫",22);
User user3 = new User("九月清晨",23);
redisTemplate.opsForValue().set(user1,user3);

2、get(Object key)

该方法就从Redis中取key对应的value

// 沿用上面的代码
redisTemplate.opsForValue().get("lcy");
// 以对象为key的,只要对象属性全都相同就可以获取到
redisTemplate.opsForValue().get(user2);

3、set(K key, V value, long timeout, TimeUnit unit)

该方法在原有的set基础上增加了过期时间,即设定一个时间,过了这个时间,这对key-value就会被Redis删除

// 300秒后过期
redisTemplate.opsForValue().set("lcy","lcy",300,TimeUnit.SECONDS);

4、其他不常用的方法

其他不常用的方法可以参考:opsForValue使用说明

二、opsForList

针对List集合的相关操作。

1、leftPush(K key, V value)

向集合左边添加元素值

// 添加完之后,在list中是这样的:[c,b,a]
redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","b");
redisTemplate.opsForList().leftPush("list","c");

2、leftPushAll(K key, V …values)

向集合左边批量添加元素,参数可以是数组、多参数、集合

// 整个过程完之后,list中是这样的:[3,2,1,a]
redisTemplate.opsForList().leftPush("list","a");
List list  = new LinkedList();
list.add("1");
list.add("2");
list.add("3");
redisTemplate.opsForList().leftPushAll("list",list);

3、leftPop(K key)

移除集合左边的第一个元素并返回这个元素

redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","b");
// 移除之后,str为b,list中剩余元素为:a
String str = redisTemplate.opsForList().leftPop("list");
既然有左边的操作,那肯定也有右边的操作,即把上诉方法的left改成right即可。

4、其他不常用的方法

其他不常用的方法可以参考:opsForList使用说明

三、opsForHash

针对Hash类型的相关操作。

1、put(H key, HK hashKey, HV value)

这是新增一个Hash值,key为外层的Hash的key值,hashKey为内层Hash的key值,value为内层Hash的key对应的value。也就是说hashKey-value就是key的value。

// 下面代码表示key值为hashKey的里面存入两个hash类型(hash1、hash2)
redisTemplate.opsForHash().put("hashKey","hash1","hash1-value");
redisTemplate.opsForHash().put("hashKey","hash2","hash2-value");

2、get(H key, Object hashKey)

获取内层hashKey对应的value

Object hashValue = redisTemplate.opsForHash().get("hashKey","hash1");

3、values(H key)

获取外层Key的存储的所有hash,并将其封装在一个Map对象返回。

// 这个map里就存在着hash1和hash1-value、hash2和hash2-value
Map hashKey = redisTemplate.opsForHash().entries("hashKey");

4、hasKey(H key, Object hashKey)

该方法是判断Key中是否存在hashKey这个键值对。

Boolean hasKey = redisTemplate.opsForHash().hasKey("hashKey", "hash1");

5、keys(H key)、entries(H key)

前者获取所有key,后者获取所有key对应的value

List hashKey1 = redisTemplate.opsForHash().values("hashKey");
System.out.println(hashKey1);
Set hashKey2 = redisTemplate.opsForHash().keys("hashKey");
System.out.println(hashKey2);

6、size(H key)

获取Hash的长度。

long hashLength = redisTemplate.opsForHash().size("hashKey");

7、putAll(H key, Map<? extends HK,? extends HV> m)

以Map集合的形式添加键值对。

Map map = new HashMap();
map.put("lcy","lcy");
map.put("jyqc","jyqc");
redisTemplate.opsForHash().putAll("hashKey",map);

8、其他不常用方法

其他不常用的方法可以参考:opsForHash的使用

四、opsForSet

针对Set类型的相关操作。

1、add(K key, V… values)

向key对应的value值中批量添加值,可以是集合、数组、多参数

List list = new ArrayList();
list.add("lcy");
list.add("jyqc");
redisTemplate.opsForSet().add("Set",list);

2、members(K key)

获取key对应的value

Set set = redisTemplate.opsForSet().members("Set");

3、size(K key)

获取key对应的值的长度。

Long set1 = redisTemplate.opsForSet().size("Set");

4、isMember(K key, Object o)

检查给定的元素是否在Set变量中。

Boolean member = redisTemplate.opsForSet().isMember("Set", "lcy");

5、pop(K key)

弹出变量中的元素。

Object set2 = redisTemplate.opsForSet().pop("Set");

6、remove(K key, Object… values)

批量移除元素。可以是集合、数组、多参数

Long set3 = redisTemplate.opsForSet().remove("Set", list);

7、randomMember(K key)

随机获取变量中的一个元素。

Object set4 = redisTemplate.opsForSet().randomMember("Set");

8、randomMembers(K key, long count)

随机获取变量中的count个元素。

List set5 = redisTemplate.opsForSet().randomMembers("Set",5);

9、delete(H key, Object… hashKeys)

删除Key变量中的键值对,可以传入多个参数,删除多个键值对。可以是集合、数组、多参数

redisTemplate.opsForHash().delete("hashKey",list);

10、其他不常用的方法

其他不常用的方法可以参考:opsForSet的使用

五、opsForZSet

针对ZSet的相关操作。zSet也是一种集合,根据score分数进行从小到大排序

1、add(K key, V value, double score)

添加元素到变量中同时指定元素的分值。

// 排序结果为:[A,D,B,C]
redisTemplate.opsForZSet().add("zSetKey","A",1);
redisTemplate.opsForZSet().add("zSetKey","B",3);
redisTemplate.opsForZSet().add("zSetKey","C",5);
redisTemplate.opsForZSet().add("zSetKey","D",2);

2、range(K key, long start, long end)

获取变量指定区间的元素,从下标0开始。

// 获取的结果为[A,D,B]
Set zSetKey = redisTemplate.opsForZSet().range("zSetKey", 0, 2);
System.out.println(zSetKey);

3、score(K key, Object o)

获取元素的分值。

Double score = redisTemplate.opsForZSet().score("zSet", "B");

4、其他方法

其他的方法可以参考:opsForZSet的用法

六、所有的键值对都可以通过delete删除

// 删除一个Key
redisTemplate.delete("hashKey");
// 删除多个Key - 可以是集合、数组、多参数
redisTemplate.delete(list);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容