redis基本用法

來源:http://doc.redisfans.com/
redis內置5種數據結構,spring-data-redis 分別提供了針對5種不同數據結構進行操作的操作類,以下為相應類型的操作方式示例。
1)string類型(key:value)
BoundValueOperations<String, Object> operation = redisTemplate.boundValueOps(key);
operation.set(value); //將值 value 關聯到 key 。
operation.set(value, 1000l, TimeUnit.MILLISECONDS); //將值 value 關聯到 key,并設置key的過期時間為1000毫秒
operation.get(); //返回 key 所關聯的值value。
2)Hash類型(key field:value),key理解為hash表的名字
BoundHashOperations<String, String, Object> operation = redisTemplate.boundHashOps(key);
operation.put(field, value); //將哈希表 key 中的域 field 的值設為 value
operation.get(field) //返回哈希表 key 中給定域 field 的值。
3)List 類型(key 理解為list的名字)
BoundListOperations<String, Object> operation=redisTemplate.boundListOps(key);
operation.leftPush(value) //將值 value 插入到列表 key 的表頭
operation.rightPop() //移除并返回列表 key 的尾元素。
List<Object> list=operation.range(0, -1); //返回列表 key 中指定區間內的元素

4)Set 類型(key理解為集合的名字)
BoundSetOperations<String, Object> operation=redisTemplate.boundSetOps(key);
operation.add(Object...values); //將一個或多個元素加入到集合 key 當中
Set<Object> set=operation.members(); //返回集合中的所有成員
operation.remove(Object...values); //移除集合中一個或多個元素

5)ZSet 類型(有序集合)
BoundZSetOperations<String, Object> operation=redisTemplate.boundZSetOps(key);
operation.add(value, score); //將value元素及其對應的score 值加入到有序集 key 當中。
operation.incrementScore(value, delta); // 為有序集 key的成員 value 的 score 值加上增量 increment 。
operation.range(0, -1); // 返回有序集 key 中,指定區間內的成員,其中成員的位置按 score 值遞增(從小到大)來排序。

其他對key的操作示例:
redisTemplate.hasKey(key) //判斷key是否存在
redisTemplate.delete(key) //刪除指定的key

spring-data-redis 本身提供了不同的序列化方式可供配置,包含Jdk序列化,Jackson等。
為方便排查問題,key 和hashKey的序列化方式統一規范為StringRedisSerializer
示例1:(key和hashkey采用StringRedisSerializer進行序列化,value和hashValue采用jdk序列化)
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer" />
<bean id="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
<property name="keySerializer" ref="stringRedisSerializer"/>
<property name="hashKeySerializer" ref="stringRedisSerializer"/>
<property name="valueSerializer" ref="jdkSerializationRedisSerializer"/>
<property name="hashValueSerializer" ref="jdkSerializationRedisSerializer"/>
</bean>

考慮到jdk序列化方式性能低下問題,在spring-data-redis原有的序列化支持基礎上擴展出FastJson 和Kryo序列化兩種方式,可根據需要自行選擇。推薦使用Kryo

使用:1.引入jar包
<dependency>
<groupId>com.weidai.redis</groupId>
<artifactId>redis</artifactId>
<version>1.0</version>
</dependency>

2.使用Kryo進行序列化配置示例:

<bean id="kryoSerializer" class="com.weidai.redis.serialize.KryoSerializer" />
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer" />
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
<property name="keySerializer" ref="stringRedisSerializer"/>
<property name="hashKeySerializer" ref="stringRedisSerializer"/>
<property name="valueSerializer" ref="kryoSerializer"/>
<property name="hashValueSerializer" ref="kryoSerializer"/>
</bean>

使用FastJson進行序列化配置示例:

<bean id="fastJsonSerializer" class="com.weidai.redis.serialize.FastJsonSerializer" />
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer" />
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
<property name="keySerializer" ref="stringRedisSerializer"/>
<property name="hashKeySerializer" ref="stringRedisSerializer"/>
<property name="valueSerializer" ref="fastJsonSerializer"/>
<property name="hashValueSerializer" ref="fastJsonSerializer"/>
</bean>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容