注意:本章代码是在上一章的基础上进行添加修改,上一章链接《第九章 企业项目开发--分布式缓存Redis(1)》上一章说了ShardedJedisPool的创建过程,以及redis五种数据结构的第一种String类型的常用缓存操作方法。下面说余下的四种:list(有序列表)set( ...
注意:本章代码是在上一章的基础上进行添加修改,上一章链接《第九章 企业项目开发--分布式缓存Redis(1)》
上一章说了ShardedJedisPool的创建过程,以及redis五种数据结构的第一种String类型的常用缓存操作方法。下面说余下的四种:
- list(有序列表)
- set(无序集合)
- sorted set(有序集合)
- hash
1、ssmm0-cache
1.1、RedisListUtil(有序列表工具类)
1 package com.xxx.cache.redis; 2 3 import java.util.List; 4 5 import redis.clients.jedis.ShardedJedis; 6 7 /** 8 * list缓存操作类 9 * 1、顺序为插入list的顺序 10 * 2、允许存放重复元素 11 * 3、可用作模拟队列(queue)、堆栈(stack),支持双向操作(L--首部或者R--尾部) 12 * 4、index从0开始 -1表示结尾 -2表示倒数第二个 13 * 5、API中的 start end参数 都是包前也包后的 14 */ 15 public class RedisListUtil extends RedisBaseUtil{ 16 17 /***************************添加缓存*****************************/ 18 /** 19 * 从左边(首部)加入列表 20 * 注意: 21 * 1、可以一次性入队n个元素(这里使用了不定参数,当然可以换做数组) 22 * 2、不定参数必须放在所有参数的最后边 23 * 3、左边入队,相当于在队头插入元素,则之后的元素都要后移一位;而右边入队的话元素直接插在队尾,之前的元素的索引不变 24 * 4、没有从list中获取指定value的运算 25 */ 26 public static void lpush(String list, String... values){ 27 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束 28 ShardedJedis jedis = null; 29 try { 30 jedis = getJedis();//获取jedis实例 31 if(jedis==null){ 32 broken = true; 33 return; 34 } 35 /* 36 * lpush(String key, String... strings); 37 * 返回push之后的list中包含的元素个数 38 */ 39 jedis.lpush(list, values); 40 } catch (Exception e) { 41 broken = true; 42 }finally{ 43 returnJedis(jedis, broken); 44 } 45 } 46 47 /** 48 * 从左边(首部)加入列表 49 * 并指定列表缓存过期时间 50 */ 51 public static void lpush(String list, int expire, String... values){ 52 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束 53 ShardedJedis jedis = null; 54 try { 55 jedis = getJedis();//获取jedis实例 56 if(jedis==null){ 57 broken = true; 58 return; 59 } 60 /* 61 * lpush(String key, String... strings); 62 * 返回push之后的list中包含的元素个数 63 */ 64 jedis.lpush(list, values); 65 jedis.expire(list, expire);//为该list设置缓存过期时间 66 } catch (Exception e) { 67 broken = true; 68 }finally{ 69 returnJedis(jedis, broken); 70 } 71 } 72 73 /** 74 * 从右边(尾部)加入列表 75 */ 76 public static void rpush(String list, String... values){ 77 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束 78 ShardedJedis jedis = null; 79 try { 80 jedis = getJedis();//获取jedis实例 81 if(jedis==null){ 82 broken = true; 83 return; 84 } 85 jedis.rpush(list, values); 86 } catch (Exception e) { 87 broken = true; 88 }finally{ 89 returnJedis(jedis, broken); 90 } 91 } 92 93 /** 94 * 从右边(尾部)加入列表 95 * 并设置缓存过期时间 96 */ 97 public static void rpush(String list, int expire, String... values){ 98 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束 99 ShardedJedis jedis = null;100 try {101 jedis = getJedis();//获取jedis实例102 if(jedis==null){103 broken = true;104 return;105 }106 jedis.rpush(list, values);107 jedis.expire(list, expire);//设置缓存过期时间108 } catch (Exception e) {109 broken = true;110 }finally{111 returnJedis(jedis, broken);112 }113 }114 115 /**116 * 设置list中index位置的元素117 * index==-1表示最后一个元素118 */119 public static void lSetIndex(String list, long index, String value){120 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束121 ShardedJedis jedis = null;122 try {123 jedis = getJedis();//获取jedis实例124 if(jedis==null){125 broken = true;126 return;127 }128 jedis.lset(list, index, value);129 } catch (Exception e) {130 broken = true;131 }finally{132 returnJedis(jedis, broken);133 }134 }135 136 /***************************获取缓存*****************************/137 /**138 * 从左边(首部)出列表139 */140 public static String lpop(String list){141 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束142 ShardedJedis jedis = null;143 try {144 jedis = getJedis();//获取jedis实例145 if(jedis==null){146 broken = true;147 return null;148 }149 return jedis.lpop(list);150 } catch (Exception e) {151 broken = true;152 }finally{153 returnJedis(jedis, broken);154 }155 return null;156 }157 158 /**159 * 从右边出列表160 */161 public static String rpop(String list){162 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束163 ShardedJedis jedis = null;164 try {165 jedis = getJedis();//获取jedis实例166 if(jedis==null){167 broken = true;168 return null;169 }170 return jedis.rpop(list);171 } catch (Exception e) {172 broken = true;173 }finally{174 returnJedis(jedis, broken);175 }176 return null;177 }178 179 /**180 * 返回list中index位置的元素181 */182 public static String lGetIndex(String list, long index){183 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束184 ShardedJedis jedis = null;185 try {186 jedis = getJedis();//获取jedis实例187 if(jedis==null){188 broken = true;189 return null;190 }191 return jedis.lindex(list, index);192 } catch (Exception e) {193 broken = true;194 }finally{195 returnJedis(jedis, broken);196 }197 return null;198 }199 200 /**201 * 返回list指定区间[start,end]内的元素 202 */203 public static List<String> lrange(String list, long start, long end){204 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束205 ShardedJedis jedis = null;206 try {207 jedis = getJedis();//获取jedis实例208 if(jedis==null){209 broken = true;210 return null;211 }212 return jedis.lrange(list, start, end);//213 } catch (Exception e) {214 broken = true;215 }finally{216 returnJedis(jedis, broken);217 }218 return null;219 }220 221 /**222 * 返回list内的全部元素 223 */224 public static List<String> lrange(String list){225 return lrange(list, 0, -1);226 }227 228 /*** 删除缓存(删除整个list,直接用RedisStringUtil的delete就好)******/229 /**230 * 让list只保留指定区间[start,end]内的元素,不在指定区间内的元素都将被删除 231 */232 public static void ltrim(String list, long start, long end){233 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束234 ShardedJedis jedis = null;235 try {236 jedis = getJedis();//获取jedis实例237 if(jedis==null){238 broken = true;239 return;240 }241 jedis.ltrim(list, start, end);242 } catch (Exception e) {243 broken = true;244 }finally{245 returnJedis(jedis, broken);246 }247 }248 249 /**250 * 删除list中所有与value相等的元素251 * 注意:252 * count253 * ==0 :删除表中所有与value相等的元素254 * >0:从表头开始向表尾搜索,移除count个与value相等的元素255 * <0:从表尾开始向表头搜索,移除count个与value相等的元素256 */257 public static void lremove(String list, long count, String value){258 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束259 ShardedJedis jedis = null;260 try {261 jedis = getJedis();//获取jedis实例262 if(jedis==null){263 broken = true;264 return;265 }266 jedis.lrem(list, count, value);//返回删除了多少个元素267 } catch (Exception e) {268 broken = true;269 }finally{270 returnJedis(jedis, broken);271 }272 }273 274 /**275 * 删除list中所有与value相等的元素276 */277 public static void lremove(String list, String value){278 lremove(list, 0, value);279 }280 281 /***************************其他*****************************/282 /**283 * 返回list**有多少个元素284 */285 public static long llength(String list){286 boolean broken = false;//标记:该操作是否被异常打断而没有正常结束287 ShardedJedis jedis = null;288 try {289 jedis = getJedis();//获取jedis实例290 if(jedis==null){291 broken = true;292 return 0;293 }294 return jedis.llen(list);295 } catch (Exception e) {296 broken = true;297 }finally{298 returnJedis(jedis, broken);299 }300 return 0;301 }302 303 public static void main(String[] args) {304 lpush("adminList", "jigang");305 lpush("adminList", "nana");//头部306 System.out.println(llength("adminList"));307 System.out.println(lrange("adminList"));308 //lpop("adminList");309 //System.out.println(llength("adminList"));310 //ltrim("adminList", 0, 1);311 //System.out.println(lrange("adminList"));312 //System.out.println(lpop("adminList"));//左边进左边出,栈(后进先出)313 //System.out.println(rpop("adminList"));//左边进右边出,队列(先进先出)314 System.out.println(lGetIndex("adminList",1));315 316 }317 }
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:第十章 企业项目开发
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。