征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)

奋斗吧
奋斗吧
擅长邻域:未填写

标签: 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL) MySQL博客 51CTO博客

2023-05-19 18:24:20 257浏览

征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL),http://snowolf.iteye.com/blog/1666908 一开始以为Spring下操作哈希表,列表,真就是那么土。恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下。  相关链接:征服Redis征服Redis+Jedis征服Redis+Jedis+Spring(一)——配置&am...



一开始以为Spring下操作哈希表,列表,真就是那么土。恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下。

征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)_Redis

  


通过spring-data-redis完成LINDEX, LLEN, LPOP, LPUSH, LRANGE, LREM, LSET, LTRIM, RPOP, RPUSH命令。其实还有一些命令,当前版本不支持。

征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)_测试_02

不过,这些List的操作方法可以实现队列,堆栈的正常操作,足够用了。

为了简便操作,我使用了StringRedisTemplate。用字符串操作做展示。当然,你可以继续使用RedisTemplate。

闲言少叙,上代码,一目了然:

 


Java代码  

征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)_System_03

1. /**
2.  * Mar 5, 2013
3.  */
4. package
5.   
6. import
7.   
8. import
9. import
10. import
11.   
12. /**
13.  * 
14.  * @author snowolf
15.  * @version 1.0
16.  * @since 1.0
17.  */
18. @Component("listOps")  
19. public class
20.   
21. @Autowired
22. private
23.   
24. /**
25.      * 压栈
26.      * 
27.      * @param key
28.      * @param value
29.      * @return
30.      */
31. public
32. return
33.     }  
34.   
35. /**
36.      * 出栈
37.      * 
38.      * @param key
39.      * @return
40.      */
41. public
42. return
43.     }  
44.   
45. /**
46.      * 入队
47.      * 
48.      * @param key
49.      * @param value
50.      * @return
51.      */
52. public
53. return
54.     }  
55.   
56. /**
57.      * 出队
58.      * 
59.      * @param key
60.      * @return
61.      */
62. public
63. return
64.     }  
65.   
66. /**
67.      * 栈/队列长
68.      * 
69.      * @param key
70.      * @return
71.      */
72. public
73. return
74.     }  
75.   
76. /**
77.      * 范围检索
78.      * 
79.      * @param key
80.      * @param start
81.      * @param end
82.      * @return
83.      */
84. public List<String> range(String key, int start, int
85. return
86.     }  
87.   
88. /**
89.      * 移除
90.      * 
91.      * @param key
92.      * @param i
93.      * @param value
94.      */
95. public void remove(String key, long
96.         stringRedisTemplate.opsForList().remove(key, i, value);  
97.     }  
98.   
99. /**
100.      * 检索
101.      * 
102.      * @param key
103.      * @param index
104.      * @return
105.      */
106. public String index(String key, long
107. return
108.     }  
109.   
110. /**
111.      * 置值
112.      * 
113.      * @param key
114.      * @param index
115.      * @param value
116.      */
117. public void set(String key, long
118.         stringRedisTemplate.opsForList().set(key, index, value);  
119.     }  
120.   
121. /**
122.      * 裁剪
123.      * 
124.      * @param key
125.      * @param start
126.      * @param end
127.      */
128. public void trim(String key, long start, int
129.         stringRedisTemplate.opsForList().trim(key, start, end);  
130.     }  
131. }

 

 

这里说明下,例如LPUSH,RPUSH,其实就是从左边压栈,还是从右边压栈的不同命令。可以把堆栈看作是一个从左至右的数组。如果左边压栈,右边出栈,那就是队列的入队/出队操作;如果左边压栈,左边出栈,那就是堆栈操作。

 

举个具体的例子:

队列操作:LPUSH入队,RPOP出队,同理,可把L|R替换。

堆栈操作:LPUSH压栈,LPOP出栈,同理,可把L|R替换。

 

下面进行测试用例,初始、结束时,分别做入队、出队操作,期间进行堆栈,队列操作。不用我细说了,看测试用例,很简单!

 


Java代码  

征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)_System_03


    1. /**
    2.  * Mar 5, 2013
    3.  */
    4. package
    5.   
    6. import static
    7.   
    8. import
    9.   
    10. import
    11. import
    12. import
    13. import
    14. import
    15. import
    16.   
    17. /**
    18.  * 
    19.  * @author snowolf
    20.  * @version 1.0
    21.  * @since 1.0
    22.  */
    23. public class
    24. private
    25. private
    26. private String key = "queue";  
    27.   
    28. @Before
    29. public void before() throws
    30. new ClassPathXmlApplicationContext("applicationContext.xml");  
    31. "listOps");  
    32.   
    33. "------------IN---------------");  
    34. for (int i = 0; i < 5; i++) {  
    35. "u"
    36.             System.out.println(uid);  
    37.             listOps.in(key, uid);  
    38.         }  
    39.     }  
    40.   
    41. @After
    42. public void
    43. // ------------OUT---------------
    44. "------------OUT---------------");  
    45. long
    46. for (long i = 0; i < length; i++) {  
    47.             String uid = listOps.out(key);  
    48.             System.out.println(uid);  
    49.         }  
    50.     }  
    51.   
    52. @Test
    53. public void
    54. // ------------PUSH---------------
    55. "stack";  
    56. int len = 5;  
    57. "------------PUSH---------------");  
    58. for (int i = 0; i < len; i++) {  
    59. "u"
    60.             System.out.println(uid);  
    61.             listOps.push(key, uid);  
    62.         }  
    63.   
    64. long
    65.         assertEquals(len, length);  
    66.   
    67. // ------------POP---------------
    68. "------------POP---------------");  
    69. for (long i = 0; i < length; i++) {  
    70.             String uid = listOps.pop(key);  
    71.             System.out.println(uid);  
    72.         }  
    73.     }  
    74.   
    75. @Test
    76. public void
    77.   
    78. // -------------INDEX-------------
    79. 3);  
    80. "u3", value);  
    81.     }  
    82.   
    83. @Test
    84. public void
    85. // -------------RANGE-------------
    86. 3, 5);  
    87. boolean result1 = list.contains("u3");  
    88. true, result1);  
    89.   
    90. boolean result2 = list.contains("u1");  
    91. false, result2);  
    92.     }  
    93.   
    94. @Test
    95. public void
    96. // ------------TRIM---------------
    97. 3, 5);  
    98. 3, 5);  
    99. boolean result3 = list.contains("u1");  
    100. false, result3);  
    101.     }  
    102.   
    103. @Test
    104. public void
    105. // ------------SET-----------------
    106. 3, 5);  
    107. 4, "ux4");  
    108. boolean result4 = list.contains("u4");  
    109. true, result4);  
    110.   
    111.     }  
    112.   
    113. @Test
    114. public void
    115. // ------------REMOVE-----------------
    116. 4, "u4");  
    117. 4);  
    118. null, value);  
    119.   
    120.     }  
    121. }


     

    好博客就要一起分享哦!分享海报

    此处可发布评论

    评论(0展开评论

    暂无评论,快来写一下吧

    展开评论

    您可能感兴趣的博客

    客服QQ 1913284695