日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis安装,redis项目以来,redis和spring整合,redis的service,redis的service实现类

發(fā)布時間:2024/9/27 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis安装,redis项目以来,redis和spring整合,redis的service,redis的service实现类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.redis安裝:

Redis-3.2.6.tar.gz安裝,參考方式:

(這里也可以用于安裝redis-4.0.9.tar.gz :? ? ?wget http://download.redis.io/releases/redis-4.0.9.tar.gz)

用源碼工程來編譯安裝

1、? 到官網(wǎng)下載最新stable版,這里使用的是:redis-3.2.6.tar.gz

2、? cd /usr/local ?

3、? mkdir?redis-src

4、? tar -zxvf ? ?redis-3.2.6.tar.gz? -C? ./redis-src/

2、解壓源碼并進(jìn)入目錄cd ?/usr/local/redis-src/redis-3.2.6

3、?先執(zhí)行make,檢查是否報(bào)錯

如果報(bào)錯提示缺少gcc,則安裝gcc :? yum install -y gcc

如果報(bào)錯提示:Newer version ofjemalloc required

則在make時加參數(shù):make MALLOC=libc?(如果沒有報(bào)錯,直接使用make命令)

?

4、安裝redis,指定安裝目錄,如 /usr/local/redis

make PREFIX=/usr/local/redis install

?

5、拷貝一份配置文件到安裝目錄下

切換到源碼目錄,里面有一份配置文件redis.conf,然后將其拷貝到安裝路徑下

cp redis.conf /usr/local/redis/

?

6、啟動redis

cd /usr/local/redis

bin/redis-server redis.conf ? (如果想后臺進(jìn)程運(yùn)行,修改:daemonize yes)

?

vim redis.conf 將下面的變量修改為:

daemonize yes

?

將bind的id換成真實(shí)的ip地址,比如:

bind 192.168.1.1

?

在集群配置中,要對redis配置密碼,修改的配置是將redis.conf這個文件的下面的變量配置成如下的:

requirepass cloudTplWebapp??? (這里設(shè)置一個密碼:cloudTplWebapp)

7、連接redis

另開一個xshell,然后:

#cd /usr/local/redis/

[root@Hadoop?redis]# bin/redis-cli?

127.0.0.1:6379>

?

設(shè)置timeout中的值為120

bin/redis-server redis.conf
auth password

bin/redis-cli -h 192.168.106.103
info clients

client list 查看客戶端連接情況


config get timeout
config set timeout 600

?

二.配置Maven依賴

<!-- 整合redis所需的jar -->

??????? <dependency>

????? ??? <groupId>org.springframework.data</groupId>

????? ??? <artifactId>spring-data-redis</artifactId>

????? ??? <version>1.6.0.RELEASE</version>

????? </dependency>

????? <dependency>

????? ??? <groupId>redis.clients</groupId>

????? ??? <artifactId>jedis</artifactId>

????? ??? <version>2.7.3</version>

????? </dependency>

二.配置applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

?? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

?? xmlns:p="http://www.springframework.org/schema/p"

?? xmlns:context="http://www.springframework.org/schema/context"

?? xmlns:tx="http://www.springframework.org/schema/tx"

?? xmlns:task="http://www.springframework.org/schema/task"

?? xsi:schemaLocation="?

??? http://www.springframework.org/schema/beans??

??? http://www.springframework.org/schema/beans/spring-beans-3.1.xsd?

??? http://www.springframework.org/schema/tx??

??? http://www.springframework.org/schema/tx/spring-tx-3.1.xsd

??? http://www.springframework.org/schema/mvc

??? http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd

??? http://www.springframework.org/schema/cache

??? http://www.springframework.org/schema/cache/spring-cache-3.1.xsd

??? http://www.springframework.org/schema/task

??? http://www.springframework.org/schema/task/spring-task-3.1.xsd

??? http://www.springframework.org/schema/context??

??? http://www.springframework.org/schema/context/spring-context-3.0.xsd

??? http://www.springframework.org/schema/aop

??? http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

???

???

?? <!-- 引入jdbc配置文件 -->

?? <context:property-placeholder location="classpath:jdbc.properties,classpath:redis.properties" />

???

?? <!—在自己的application中加入如下配置 -->

?? <import resource="redis-context.xml"/>

</beans>

?其中redis-context.xml的內(nèi)容如下:

?

<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'><beans><!-- Jedis線程 --><bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxTotal" value="${redis.pool.maxTotal}" /><property name="maxIdle" value="${redis.pool.maxIdle}" /><property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" /><property name="testOnBorrow" value="${redis.pool.testOnBorrow}" /></bean><!-- 配置多個redis的方式,start --><bean id="jedis.shardInfo.0" class="redis.clients.jedis.JedisShardInfo"><constructor-arg index="0" value="${redis.ip.0}" /><constructor-arg index="1" value="${redis.port.0}" /></bean><!--<bean id="jedis.shardInfo.1" class="redis.clients.jedis.JedisShardInfo"><constructor-arg index="0" value="${redis.ip.1}" /><constructor-arg index="1" value="${redis.port.1}" /></bean>--><bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"><constructor-arg index="0" ref="jedisPoolConfig" /><constructor-arg index="1"><list><ref bean="jedis.shardInfo.0" /><!--<ref bean="jedis.shardInfo.1" />--></list></constructor-arg></bean><!-- 配置多個redis的方式,end --><bean id="jedisConnectionFactory"class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"><!-- 以下是配置多個redis的方式 :start --><!--<property name="shardInfo" value="shardedJedisPool"></property>--><!-- 以上是配置多個reids的方式 :end --><!-- 以下是配置單個redis的方式:start --><property name="hostName" value="${redis.ip.0}" /><property name="port" value="${redis.port.0}" /><property name="password" value="${redis.pass}"/><property name="timeout" value="${redis.timeout}"/><property name="database" value="${redis.default.db}"/><property name="poolConfig" ref="jedisPoolConfig" /><!-- 以上是配置單個redis的方式:end--></bean><bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"><property name="connectionFactory" ref="jedisConnectionFactory" /></bean><bean id="redisService" class="xx.tpl.rediscache.impl.RedisServiceImpl"><property name="redisTemplate" ref="redisTemplate" /><property name="expirationtime" value="${redis.expiration}"/></bean> </beans>

?

?

?

?

?

編寫redis.properties屬性文件

#redis.pool.maxActive=1024

#redis.pool.maxIdle=200

#redis.pool.maxWait=1000

#redis.pool.testOnBorrow=true

?

redis.ip.0=192.168.1.1

redis.port.0=6379

#密碼

redis.pass=cloudTplWebapp

#設(shè)置默認(rèn)的連接的db

redis.default.db=0

redis.timeout=100000

redis.maxActive=300

?

redis.ip.1=192.168.1.1

redis.port.1=6379

redis.pool.maxTotal=1024

redis.pool.maxIdle=200

redis.pool.maxWaitMillis=1000

redis.pool.testOnBorrow=true

redis.expiration=300

?

Redis的RedisService如下:

package xxx.xxx.xxx.rediscache;

?

import java.io.Serializable;

import java.util.Map;

import java.util.Set;

?

/**

?* RedisService.java redis的服務(wù)操作類

?* @attention

?* @author toto

?* @date 2017-1-12

?* @note begin modify by 涂作權(quán) 2017-1-12 原始創(chuàng)建

?*/

public interface RedisService<T> {

???

???????? /**

???? * 將內(nèi)容保存到緩存中

???? *

???? * @param key

???? * @param value

???? * @throws Exception

???? * @attention

???? * @author toto

???? * @date 2017-1-12

???? * @note? begin modify by 涂作權(quán) 2017-1-12 原始創(chuàng)建

???? */

???????? public void save(final String key, Object value) throws Exception;

?

???????? /**

???????? ?* 獲取內(nèi)存中的內(nèi)容

???????? ?* @param <T>

???????? ?* @param key

???????? ?* @param elementType

???????? ?* @return

???????? ?* @throws Exception

???????? ?* @attention

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 原始創(chuàng)建 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public <T> T getByKey(final String key, Class<T> elementType) throws Exception;

????????

???????? /**

???????? ?* 通過傳遞key刪除所有的在緩存中的內(nèi)容

???????? ?* @param key

???????? ?* @attention

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public void del(String... key) throws Exception;

????????

???????? /**

???????? ?* 批量刪除<br/>

???????? ?* @param pattern

???????? ?* @throws Exception

???????? ?* @attention 該操作會執(zhí)行模糊查詢,請盡量不要使用,以免影響性能或誤刪

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note begin modify by 涂作權(quán)? 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public void batchDel(String... pattern) throws Exception;

?

???????? /**

???????? ?* 取得緩存(int型)

???????? ?* @param key

???????? ?* @return

???????? ?* @throws Exception

???????? ?* @attention 方法的使用注意事項(xiàng)

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12 原始創(chuàng)建

???????? ?*/

???????? public Integer getInt(String key) throws Exception;

????????

???????? /**

???????? ?* 取得緩存(字符串類型)?

???????? ?* @param key

???????? ?* @return

???????? ?* @attention 方法的使用注意事項(xiàng)

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public String getStr(String key) throws Exception;

????????

???????? /**

???????? ?* 取得緩存(字符串類型)

???????? ?* @param key

???????? ?* @param retain

???????? ?* @return

???????? ?* @throws Exception

???????? ?* @attention

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public String getStr(String key,boolean retain) throws Exception;

????????

???????? /**

???????? ?* 獲取緩存<br>

???????? ?* @param key

???????? ?* @return

???????? ?* @throws Exception

???????? ?* @attention 注:基本數(shù)據(jù)類型(Character除外),請直接使用get(String key, Class<T> clazz)取值

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public Object getObj(String key) throws Exception;

????????

???????? /**

???????? ?* 獲取緩存<br>?

???????? ?* @param key

???????? ?* @param retain 是否保留

???????? ?* @return

???????? ?* @attention 注:java 8種基本類型的數(shù)據(jù)請直接使用get(String key, Class<T> clazz)取值

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12 原始創(chuàng)建

???????? ?*/

???????? public Object getObj(String key,boolean retain) throws Exception ;

????????

???????? /**

???????? ?* 獲取緩存

???????? ?* @param <T>

???????? ?* @return

???????? ?* @throws Exception

???????? ?* @attention 方法的使用注意事項(xiàng)

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 修改人 修改時間?? 修改內(nèi)容摘要說明

???????? ?*/

???????? public <T> T get(String key, Class<T> clazz) throws Exception;

????????

???????? /**

???? * 將value對象寫入緩存

???? * @param key

???? * @param value

???? * @param time 失效時間(秒)

???? */

??? public void set(String key,Object value,long expirationtime)throws Exception;

???

??? /**

???? * 遞減操作

???? * @param key

???? * @param by

???? * @return

???? */

??? public double decr(String key, double by)throws Exception;

???

??? /**

???? * 遞增操作

???? * @param key

???? * @param by

???? * @return

???? */

??? public double incr(String key, double by)throws Exception;

???

??? /**

???? * 獲取double類型值

???? * @param key

???? * @return

???? */

??? public double getDouble(String key) throws Exception;

???

??? /**

???? * 設(shè)置double類型值

???? * @param key

???? * @param value

???? * @param time 失效時間(秒)

???? */

??? public void setDouble(String key, double value,long expirationtime) throws Exception;

???

??? /**

???? * 設(shè)置double類型值

???? * @param key

???? * @param value

?? ??* @param time 失效時間(秒)

???? */

??? public void setInt(String key, int value, long expirationtime) throws Exception;

???

??? /**

???? * 將map寫入緩存

???? * @param key

???? * @param map

???? * @param time 失效時間(秒)

???? */

??? public <T> void setMap(String key, Map<String, T> map, long expirationtime)throws Exception;

???

??? /**

???? * 向key對應(yīng)的map中添加緩存對象

???? * @param key

???? * @param map

???? */

??? public <T> void addMap(String key, Map<String, T> map)throws Exception;

???

??? /**

???? * 向key對應(yīng)的map中添加緩存對象

???? * @param key?? cache對象key

???? * @param field map對應(yīng)的key

???? * @param value???? 值

???? */?

??? public void addMap(String key, String field, String value)throws Exception;

???

??? /**

???? * 向key對應(yīng)的map中添加緩存對象

???? * @param key?? cache對象key

???? * @param field map對應(yīng)的key

???? * @param obj?? 對象

???? */?

??? public <T> void addMap(String key, String field, T obj)throws Exception;

???

??? /**

???? * 獲取map緩存

???? * @param key

???? * @param clazz

???? * @return

???? */?

??? public <T> Map<String, T> mget(String key, Class<T> clazz)throws Exception;

???

??? /**

???? * 獲取map緩存中的某個對象

???? * @param key

???? * @param field

???? * @param clazz

???? * @return

???? */

??? public <T> T getMapField(String key, String field, Class<T> clazz)throws Exception;

???

??? /**

???? * 刪除map中的某個對象

???? * @author lh

???? * @date 2016年8月10日

???? * @param key?? map對應(yīng)的key

???? * @param field map中該對象的key

???? */?

??? public void delMapField(String key, String... field)throws Exception;

???

??? /**

???? * 指定緩存的失效時間

???? *

???? * @author FangJun

???? * @date 2016年8月14日

???? * @param key 緩存KEY

???? * @param time 失效時間(秒)

???? */

??? public void expire(String key, long expirationtime) throws Exception;

???

??? /**

???? * 添加set

???? * @param key

???? * @param value

???? */

??? public void sadd(String key, String... value) throws Exception;

???

??? /**

???? * 刪除set集合中的對象

???? * @param key

???? * @param value

???? */?

??? public void srem(String key, String... value) throws Exception;

???

??? /**

???? * set重命名

???? * @param oldkey

???? * @param newkey

???? */

??? public void srename(String oldkey, String newkey)throws Exception;

???

??? /**

???? * 模糊查詢keys

???? * @param pattern

???? * @return

???? */

??? public Set<Serializable> keys(String pattern)throws Exception;

}

?

Redis的RedisServiceImpl的實(shí)現(xiàn)類:

package xxx.xxx.xxx.rediscache.impl;

?

import java.io.Serializable;

import java.util.Map;

import java.util.Set;

import java.util.concurrent.TimeUnit;

?

import org.apache.commons.lang.StringUtils;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.springframework.dao.DataAccessException;

import org.springframework.data.redis.connection.RedisConnection;

import org.springframework.data.redis.core.BoundHashOperations;

import org.springframework.data.redis.core.RedisCallback;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.util.CollectionUtils;

?

import com.ucap.tpl.rediscache.RedisService;

import com.ucap.tpl.utils.SerializeUtils;

?

@SuppressWarnings({"unchecked"})

public class RedisServiceImpl<T> implements RedisService<T> {

???????? @SuppressWarnings("unused")

???????? private static Log logger = LogFactory.getLog(RedisServiceImpl.class);

???????? private static RedisTemplate<Serializable, Serializable> redisTemplate;

???????? private long expirationtime;

????????

???????? public long getExpirationtime() {

?????????????????? return expirationtime;

???????? }

?

???????? public RedisTemplate<Serializable, Serializable> getRedisTemplate() {

?????????????????? return redisTemplate;

???????? }

?

???????? @SuppressWarnings("static-access")

???????? public void setRedisTemplate(

??????????????????????????? RedisTemplate<Serializable, Serializable> redisTemplate) {

?????????????????? this.redisTemplate = redisTemplate;

???????? }

?

???????? public void setExpirationtime(long expirationtime) {

?????????????????? this.expirationtime = expirationtime;

???????? }

????????

???????? /**

???????? ?* 保存內(nèi)容到緩存中

???????? ?*/

???????? public void save(final String key, Object value) throws Exception {

?????????????????? final byte[] vbytes = SerializeUtils.serialize(value);

?????????????????? redisTemplate.execute(new RedisCallback<Object>() {

?

??????????????????????????? public Object doInRedis(RedisConnection connection)

?????????????????????????????????????????????? throws DataAccessException {

???????????????????????????????????? connection.set(redisTemplate.getStringSerializer().serialize(key), vbytes);

???????????????????????????????????? return null;

??????????????????????????? }

?????????????????? });

???????? }

????????

???????? /**

???????? ?* 通過key取到保存在緩存中的內(nèi)容

???????? ?*/

???????? public <T> T getByKey(final String key, Class<T> elementType) throws Exception {

?????????????????? try {

??????????????????????????? return redisTemplate.execute(new RedisCallback<T>() {

???????????????????????????????????? public T doInRedis(RedisConnection connection)

??????????????????????????????????????????????????????? throws DataAccessException {

?????????????????????????????????????????????? byte[] keyBytes = redisTemplate.getStringSerializer().serialize(key);

?????????????????????????????????????????????? if (connection.exists(keyBytes)) {

??????????????????????????????????????????????????????? byte[] valueBytes = connection.get(keyBytes);

???????????????????????????????????????????????????????

??????????????????????????????????????????????????????? T value = (T) SerializeUtils.unserialize(valueBytes);

??????????????????????????????????????????????????????? return value;

?????????????????????????????????????????????? }

?????????????????????????????????????????????? return null;

???????????????????????????????????? }

??????????????????????????? });

?????????????????? } catch (Exception e) {

??????????????????????????? e.printStackTrace();

?????????????????? }

?????????????????? return null;

???????? }

????????

???????? /**

???????? ?* 通過傳遞key刪除所有的在緩存中的內(nèi)容

???????? ?* @param key

???????? ?* @attention 這里個的key是可變參數(shù)的key

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public void del(String... key) throws Exception {

?????????????????? if (key != null && key.length > 0) {

??????????????????????????? if (key.length == 1) {

???????????????????????????????????? redisTemplate.delete(key[0]);

??????????????????????????? } else {

???????????????????????????????????? redisTemplate.delete(CollectionUtils.arrayToList(key));

??????????????????????????? }

?????????????????? }

???????? }

????????

???????? /**

???????? ?* 批量刪除<br/>

???????? ?* @param pattern

???????? ?* @throws Exception

???????? ?* @attention 該操作會執(zhí)行模糊查詢,請盡量不要使用,以免影響性能或誤刪

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note begin modify by 涂作權(quán)? 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public void batchDel(String... pattern) throws Exception {

?????????????????? for (String pt : pattern) {

??????????????????????????? redisTemplate.delete(redisTemplate.keys(pt + "*"));

?????????????????? }

???????? }

?

???????? /**

???????? ?* 取得緩存(int型)

???????? ?* @param key

???????? ?* @return

???????? ?* @throws Exception

???????? ?* @attention 方法的使用注意事項(xiàng)

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12 原始創(chuàng)建

???????? ?*/

???????? public Integer getInt(String key) throws Exception {

?????????????????? String value = (String) redisTemplate.boundValueOps(key).get();

?????????????????? if (StringUtils.isNotBlank(value)) {

??????????????????????????? return Integer.valueOf(value);

?????????????????? }

?????????????????? return null;

???????? }

?

???????? /**

???????? ?* 取得緩存(字符串類型)?

???????? ?* @param key

???????? ?* @return

???????? ?* @attention 方法的使用注意事項(xiàng)

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public String getStr(String key) throws Exception {

?????????????????? return (String) redisTemplate.boundValueOps(key).get();

???????? }

?

???????? /**

???????? ?* 取得緩存(字符串類型)

???????? ?* @param key

???????? ?* @param retain

???????? ?* @return

???????? ?* @attention

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note? begin modify by 涂作權(quán) 2017-1-12 原始創(chuàng)建

???????? ?*/

???????? public String getStr(String key,boolean retain) throws Exception {

?????????????????? String value = (String) redisTemplate.boundValueOps(key).get();

?????????????????? if (!retain) {

??????????????????????????? redisTemplate.delete(key);

?????????????????? }

?????????????????? return value;

???????? }

?

???????? /**

???????? ?* 獲取緩存<br>

???????? ?* 注:基本數(shù)據(jù)類型(Character除外),請直接使用get(String key, Class<T> clazz)取值

???????? ?* @param key

???????? ?* @return

???????? ?*/

???????? public Object getObj(String key) throws Exception {

?????????????????? return redisTemplate.boundValueOps(key).get();

???????? }

?

???????? /**

???????? ?* 獲取緩存<br>?

???????? ?* @param key

???????? ?* @param retain 是否保留

???????? ?* @return

???????? ?* @attention 注:java 8種基本類型的數(shù)據(jù)請直接使用get(String key, Class<T> clazz)取值

???????? ?* @author toto

???????? ?* @date 2017-1-12

???????? ?* @note begin modify by 涂作權(quán) 2017-1-12? 原始創(chuàng)建

???????? ?*/

???????? public Object getObj(String key, boolean retain) throws Exception {

?????????????????? Object obj = redisTemplate.boundValueOps(key).get();

?????????????????? if (!retain) {

??????????????????????????? redisTemplate.delete(key);

?????????????????? }

?????????????????? return obj;

???????? }

????????

???????? /**

???? * 獲取緩存<br>

???? * 注:該方法暫不支持Character數(shù)據(jù)類型

???? * @param key?? key

???? * @param clazz 類型

???? * @return

???? */

???????? public <T> T get(String key, Class<T> clazz) throws Exception {

??????? return (T) redisTemplate.boundValueOps(key).get();

??? }

?????

??? /**

???? * 將value對象寫入緩存

???? * @param key

???? * @param value

???? * @param time 失效時間(秒)

???? */?

??? public void set(String key,Object value,long expirationtime)throws Exception {?

??????? if(value.getClass().equals(String.class)){

??????????? redisTemplate.opsForValue().set(key, value.toString());

??????? }else if(value.getClass().equals(Integer.class)){

???? ???????redisTemplate.opsForValue().set(key, value.toString());

??????? }else if(value.getClass().equals(Double.class)){

??????????? redisTemplate.opsForValue().set(key, value.toString());

??????? }else if(value.getClass().equals(Float.class)){

??????????? redisTemplate.opsForValue().set(key, value.toString());

??????? }else if(value.getClass().equals(Short.class)){

??????????? redisTemplate.opsForValue().set(key, value.toString());

??????? }else if(value.getClass().equals(Long.class)){

??????????? redisTemplate.opsForValue().set(key, value.toString());

??????? }else if(value.getClass().equals(Boolean.class)){

??????????? redisTemplate.opsForValue().set(key, value.toString());

??????? }else{

??????????? redisTemplate.opsForValue().set(key, SerializeUtils.serialize(value));

??????? }

??????? if(expirationtime > 0){

??????????? redisTemplate.expire(key, expirationtime, TimeUnit.SECONDS);

??????? }

??? }

???

??? /**

???? * 遞減操作

???? * @param key

???? * @param by

???? * @return

???? */

??? public double decr(String key, double by)throws Exception {

??????? return redisTemplate.opsForValue().increment(key, -by);

??? }

?????

??? /**

???? * 遞增操作

???? * @param key

???? * @param by

???? * @return

?? ??*/

??? public double incr(String key, double by)throws Exception {

??????? return redisTemplate.opsForValue().increment(key, by);

??? }

?????

??? /**

???? * 獲取double類型值

???? * @param key

???? * @return

???? */

??? public double getDouble(String key) throws Exception {

??????? String value = (String) redisTemplate.boundValueOps(key).get();

??????? if(StringUtils.isNotBlank(value)){

??????????? return Double.valueOf(value);

??????? }

??????? return 0d;

??? }

???

??? /**

???? * 設(shè)置double類型值

???? * @param key

???? * @param value

???? * @param time 失效時間(秒)

???? */

??? public void setDouble(String key, double value,long expirationtime) throws Exception {

??????? redisTemplate.opsForValue().set(key, String.valueOf(value));

??????? if(expirationtime > 0){

??????????? redisTemplate.expire(key, expirationtime, TimeUnit.SECONDS);

??????? }

??? }

???

??? /**

???? * 設(shè)置double類型值

???? * @param key

???? * @param value

???? * @param time 失效時間(秒)

???? */

??? public void setInt(String key, int value, long expirationtime) throws Exception {

??????? redisTemplate.opsForValue().set(key, String.valueOf(value));

??????? if(expirationtime > 0){

??????????? redisTemplate.expire(key,expirationtime, TimeUnit.SECONDS);

??????? }

??? }

?????

??? /**

???? * 將map寫入緩存

???? * @param key

???? * @param map

???? * @param time 失效時間(秒)

???? */

??? public <T> void setMap(String key, Map<String, T> map, long expirationtime)throws Exception {

??????? redisTemplate.opsForHash().putAll(key, map);

??? }

???

??? /**

???? * 向key對應(yīng)的map中添加緩存對象

???? * @param key

???? * @param map

???? */

??? public <T> void addMap(String key, Map<String, T> map)throws Exception {

??????? redisTemplate.opsForHash().putAll(key, map);

??? }

???

??? /**

? ???* 向key對應(yīng)的map中添加緩存對象

???? * @param key?? cache對象key

???? * @param field map對應(yīng)的key

???? * @param value???? 值

???? */

??? public void addMap(String key, String field, String value)throws Exception {

??????? redisTemplate.opsForHash().put(key, field, value);

??? }

?????

??? /**

???? * 向key對應(yīng)的map中添加緩存對象

???? * @param key?? cache對象key

???? * @param field map對應(yīng)的key

???? * @param obj?? 對象

???? */

??? public <T> void addMap(String key, String field, T obj)throws Exception {

??????? redisTemplate.opsForHash().put(key, field, obj);

??? }

???

??? /**

???? * 獲取map緩存

???? * @param key

???? * @param clazz

???? * @return

???? */

??? public <T> Map<String, T> mget(String key, Class<T> clazz)throws Exception {

?? ?????BoundHashOperations<Serializable, String, T> boundHashOperations = redisTemplate.boundHashOps(key);

??????? return boundHashOperations.entries();

??? }?

??

??? /**

???? * 獲取map緩存中的某個對象

???? * @param key

???? * @param field

???? * @param clazz

???? * @return

???? */

??? public <T> T getMapField(String key, String field, Class<T> clazz)throws Exception {

??????? return (T)redisTemplate.boundHashOps(key).get(field);

??? }?

?????

??? /**

???? * 刪除map中的某個對象

???? * @author lh

???? * @date 2016年8月10日

???? * @param key?? map對應(yīng)的key

???? * @param field map中該對象的key

???? */

??? public void delMapField(String key, String... field)throws Exception {

??????? BoundHashOperations<Serializable, String, Object> boundHashOperations = redisTemplate.boundHashOps(key);

??????? boundHashOperations.delete(field);

??? }

?????

??? /**

???? * 指定緩存的失效時間

???? *

???? * @author FangJun

???? * @date 2016年8月14日

???? * @param key 緩存KEY

???? * @param time 失效時間(秒)

???? */

??? public void expire(String key, long expirationtime) throws Exception {

??????? if(expirationtime > 0){

??????????? redisTemplate.expire(key, expirationtime, TimeUnit.SECONDS);

??????? }

??? }

???

??? /**

???? * 添加set

???? * @param key

???? * @param value

???? */

??? public void sadd(String key, String... value) throws Exception {?

??????? redisTemplate.boundSetOps(key).add(value);

??? }

???

??? /**

???? * 刪除set集合中的對象

???? * @param key

???? * @param value

???? */

??? public void srem(String key, String... value) throws Exception {

??????? redisTemplate.boundSetOps(key).remove(value);

??? }

???

??? /**

???? * set重命名

???? * @param oldkey

???? * @param newkey

???? */

??? public void srename(String oldkey, String newkey)throws Exception {?

??????? redisTemplate.boundSetOps(oldkey).rename(newkey);

??? }

?????

??? /**

???? * 模糊查詢keys

???? * @param pattern

???? * @return

???? */

??? public Set<Serializable> keys(String pattern)throws Exception {?

??????? return redisTemplate.keys(pattern);

??? }

}

?依賴的SerializeUtils.java代碼如下:

?

package xx.tpl.utils;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream;/*** SerializeUtils.java 序列化相關(guān)的操作類* @attention* @author toto* @date 2017-1-12* @note begin modify by 涂作權(quán) 2017-1-12 原始創(chuàng)建*/ public class SerializeUtils {/*** 將對象進(jìn)行序列化* @param object* @return* @attention 傳遞對象,將* @author toto* @date 2017-1-12 * @note begin modify by 修改人 修改時間 修改內(nèi)容摘要說明*/public static byte[] serialize(Object object) {ObjectOutputStream oos = null;ByteArrayOutputStream baos = null;try {// 序列化baos = new ByteArrayOutputStream();oos = new ObjectOutputStream(baos);oos.writeObject(object);byte[] bytes = baos.toByteArray();return bytes;} catch (Exception e) {throw new RuntimeException(e.getMessage(), e);}}/*** 反序列化* @param bytes* @return* @attention 反序列化的操作* @author toto* @date 2017-1-12 * @note begin modify by 涂作權(quán) 2017-1-12 原始創(chuàng)建*/public static Object unserialize(byte[] bytes) {ByteArrayInputStream bais = null;try {// 反序列化bais = new ByteArrayInputStream(bytes);ObjectInputStream ois = new ObjectInputStream(bais);return ois.readObject();} catch (Exception e) {throw new RuntimeException(e.getMessage(), e);}} }

?

?

?

?

?

在BaseController 中引入如下的內(nèi)容:

/** 獲取redisservice連接 */

@Resource(name = "redisService")

protected RedisServiceImpl redisService;

最后,在項(xiàng)目中就可以通過redisService調(diào)用其它的redis方法了。

?

?

總結(jié)

以上是生活随笔為你收集整理的redis安装,redis项目以来,redis和spring整合,redis的service,redis的service实现类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

丁香资源影视免费观看 | 久久激情五月丁香伊人 | 日狠狠 | 亚洲国产成人在线 | 天天操夜夜操 | 中文字幕在线字幕中文 | 夜夜躁天天躁很躁波 | 免费看的黄网站软件 | 国产精品国产自产拍高清av | 正在播放国产一区 | 色偷偷88欧美精品久久久 | 亚洲国产精品一区二区尤物区 | 久草在线| 日韩高清网站 | 亚洲精品88欧美一区二区 | 97色视频在线 | 91av视频播放 | av在线免费观看不卡 | 九色精品免费永久在线 | 成人网中文字幕 | 欧美成人性网 | 久久欧美精品 | 久久免费av | 久久96国产精品久久99软件 | 特级黄色片免费看 | 五月婷影院 | 中文字幕一区在线观看视频 | 国产黄色电影 | 国产麻豆精品一区 | 色视频一区 | 久草在线官网 | 亚洲最大av网站 | 在线观看精品一区 | 久久久久欠精品国产毛片国产毛生 | 日韩在线网 | 国产精品99久久免费黑人 | 在线国产能看的 | 免费h视频 | 91久久人澡人人添人人爽欧美 | 免费午夜网站 | 国产69熟 | 97在线精品 | 成人免费网站在线观看 | 在线免费观看涩涩 | 国产精品久久99综合免费观看尤物 | 免费观看xxxx9999片 | 精品视频区 | 亚洲丝袜一区 | 91chinese在线 | 亚洲国产中文在线观看 | 日韩三区在线观看 | 97人人澡人人添人人爽超碰 | 97成人啪啪网 | 蜜臀一区二区三区精品免费视频 | av中文字幕亚洲 | 免费亚洲片 | 成人av中文字幕在线观看 | www夜夜操com | 日韩av电影免费观看 | 日韩在线电影一区二区 | 日韩精品视频在线免费观看 | 人人玩人人添人人澡超碰 | 国产一级一级国产 | 中文字幕在线观看视频免费 | 日韩欧美一区二区三区视频 | 国内精品视频一区二区三区八戒 | 国产精品露脸在线 | 午夜久久网 | 国产黄色精品视频 | 99c视频高清免费观看 | 久久视奸 | 全黄色一级片 | 日本黄色黄网站 | 国产69久久久 | 日韩av在线小说 | 91中文字幕视频 | 99精品在线 | 黄色一及电影 | 久久人操 | 亚洲欧洲中文日韩久久av乱码 | 欧美日韩伦理在线 | 美女中文字幕 | 国产日韩精品在线观看 | 婷婷九九| 91麻豆精品国产91久久久无限制版 | 久久在线精品视频 | 亚洲码国产日韩欧美高潮在线播放 | 日韩免费一区二区三区 | 欧美男女爱爱视频 | 中文字幕日韩电影 | 三级免费黄色 | 国产在线精| 日本中文在线观看 | 在线视频免费观看 | 欧美日韩一区三区 | 国产在线免费av | 国产xvideos免费视频播放 | 久草视频网 | 久久五月婷婷综合 | 玖玖在线播放 | 免费无遮挡动漫网站 | 久久成年人视频 | 欧美成a人片在线观看久 | 国产成人精品日本亚洲999 | 精品国产中文字幕 | 亚洲国产剧情av | 国产黑丝一区二区三区 | 日韩视频免费在线 | 久久视 | 亚洲欧美综合精品久久成人 | 青青久视频| 成全在线视频免费观看 | 精品国产伦一区二区三区 | 免费三级黄色 | 亚洲综合情 | 99久久精品免费看国产免费软件 | 久久成人在线视频 | 天天干天天拍天天操 | 日韩色区 | 欧洲色吧 | 欧美日韩免费一区二区三区 | 日韩成人高清在线 | 久久久国产毛片 | a视频在线 | 亚洲va欧美va人人爽春色影视 | 国产精品资源在线 | 中文字幕在线观看完整版电影 | 精品1区二区 | 一区二区观看 | 免费av网站在线 | 日韩一二三 | 在线视频18在线视频4k | 五月天电影免费在线观看一区 | 乱男乱女www7788 | 日韩一区在线播放 | 亚洲国产精品人久久电影 | 69国产盗摄一区二区三区五区 | 国产亚洲精品女人久久久久久 | 91精品国产91 | 狠狠操在线 | 久久国产精品99精国产 | 国产精品大片在线观看 | 久久精品123 | 亚洲国产精品日韩 | 精品国精品自拍自在线 | 中文区中文字幕免费看 | 日本69hd | av直接看| 日韩一区二区三区高清免费看看 | 成人中文字幕+乱码+中文字幕 | 在线最新av | 亚洲天堂社区 | 精品一区二区在线免费观看 | 久草视频在线观 | 在线日韩一区 | 亚洲国产精品成人精品 | 激情综合网色播五月 | 婷婷丁香五 | 狠狠久久综合 | 国产一级视频在线 | 国产精彩视频一区二区 | 久久精品99 | 五月婷婷久 | 亚洲第一av在线播放 | 97视频在线观看播放 | 国产在线第三页 | 蜜臀av性久久久久av蜜臀妖精 | 国产在线欧美 | 精品欧美在线视频 | 久久看毛片 | 亚洲精品在线免费观看视频 | 久久国产日韩 | 久久亚洲在线 | 久久免费电影网 | 欧美日本一二三 | 中文字幕在线一二 | 丁香六月综合网 | 色综合久久综合网 | 国产精品久久久久久久久婷婷 | 日本最新高清不卡中文字幕 | 久久精品欧美一 | 99久久精品久久久久久清纯 | 久久99最新地址 | 精品国内自产拍在线观看视频 | 国产成人精品国内自产拍免费看 | 国产成人一区二区精品非洲 | 日批视频在线播放 | 欧美日韩高清不卡 | 黄色在线看网站 | 九九九热精品免费视频观看 | 亚洲资源视频 | 91久草视频 | 一区二区理论片 | 天天草天天草 | 亚洲精品黄网站 | 国产手机在线播放 | 日韩视频免费观看高清完整版在线 | av三级在线免费观看 | 人人添人人澡 | 在线观看av的网站 | 久久av高清 | 黄色三级免费 | 在线观看日韩中文字幕 | 国产一区二区三区免费观看视频 | 日韩av在线不卡 | 天堂网一区二区 | 在线观影网站 | 92av视频| 免费日韩一区二区三区 | 久久资源总站 | 天天干夜夜擦 | 中文字字幕在线 | 国产五月色婷婷六月丁香视频 | 欧美孕交vivoestv另类 | 国产精品美女久久久久久免费 | 国产日韩精品欧美 | 又黄又爽的视频在线观看网站 | 日韩av一区二区在线影视 | 天天色综合久久 | 日韩激情片在线观看 | 日韩va亚洲va欧美va久久 | 欧美日韩在线精品 | 国产欧美在线一区二区三区 | 日韩视频免费 | 91精品国产综合久久久久久久 | 国产精品久久久久久久久岛 | 国产精品 国内视频 | 亚洲综合在线发布 | 久久成人在线视频 | 中文字幕在线视频一区二区三区 | 久久亚洲视频 | 日本婷婷色 | 久久精品国产免费看久久精品 | 国产无套精品久久久久久 | 日韩av一区二区在线 | 狠狠操导航 | 国产青青青 | 黄色在线免费观看网址 | 精壮的侍卫呻吟h | 午夜av免费观看 | 国产香蕉视频 | 狠狠做深爱婷婷综合一区 | 国产精品麻豆视频 | 男女视频国产 | 久久 在线| 激情网站免费观看 | 亚洲午夜精品久久久久久久久 | 麻豆一二三精选视频 | 特级大胆西西4444www | 亚洲资源 | 中文字幕视频在线播放 | 亚洲丝袜一区 | 在线免费观看黄色大片 | 国产黄色精品视频 | 九九视频网 | 色婷婷狠狠干 | 一区免费视频 | 国产一级黄色片免费看 | 天天曰天天 | 日本黄色大片免费看 | 久久久国产精品电影 | 中文字幕精品一区二区精品 | 人人插人人看 | 久久色视频 | 韩日三级在线 | 五月婷婷激情六月 | 久久久久久久久久久影视 | 91插插插网站 | 国内99视频 | 国产91亚洲精品 | 狠狠色噜噜狠狠狠合久 | 日韩成人在线免费观看 | 亚洲精品视频二区 | 日韩精品一区二区三区在线播放 | 久艹在线免费观看 | www.伊人网 | 99r在线视频 | 国产一区黄色 | av中文字幕剧情 | 日韩黄色在线观看 | 亚洲最大成人免费网站 | 黄色在线观看免费网站 | 最近中文国产在线视频 | 九九精品久久 | 91香蕉视频| 久久99视频免费观看 | 国产精品久久网 | 在线观看免费成人 | 免费看的黄色小视频 | 国产一级在线观看视频 | 在线观看中文字幕一区二区 | 91麻豆文化传媒在线观看 | 一区二区不卡视频在线观看 | 97超碰超碰久久福利超碰 | 中文字幕传媒 | 国产淫片 | 美女av电影| 久久久国产一区二区 | 免费看黄视频 | 精品国产欧美一区二区 | 国产精品久久久久久久久久东京 | 亚洲婷久久 | 日日干视频 | 久久免费精品一区二区三区 | 丁香花在线视频观看免费 | 伊人资源站 | 欧美日韩在线视频观看 | 高清不卡一区二区三区 | 深爱五月激情网 | 91黄色免费看 | 99 精品 在线 | 中文字幕中文字幕在线中文字幕三区 | 亚洲专区免费观看 | 久久久久国产精品免费 | h视频日本| 黄色一级在线观看 | av中文电影| 久久天堂影院 | av在线不卡观看 | 亚洲激情视频在线 | 人人狠狠综合久久亚洲婷 | 最新日韩精品 | 欧美亚洲专区 | 国产 日韩 在线 亚洲 字幕 中文 | 久久成人高清视频 | 国产精品久久久久9999 | 国产一级在线看 | 久久久久久久久久久久久影院 | 97色在线| 亚洲成人精品久久久 | 国产 日韩 中文字幕 | 国产日韩视频在线观看 | 中文字幕国产视频 | 国产尤物一区二区三区 | 免费高清看电视网站 | 91在线免费视频 | 精品国产一区二区三区久久久蜜月 | www久久精品 | 欧美韩国日本在线 | 免费av小说 | 日日干天天射 | 久久久精品视频网站 | 成人超碰97 | 日本婷婷色 | 中文字幕三区 | 粉嫩av一区二区三区四区在线观看 | 91麻豆精品国产91久久久无需广告 | 国产精品美女久久久久久 | 国产精品久久99 | 人人澡超碰碰 | 国产精品久久久久久久久久久久午夜 | 欧美9999| 超碰人在线 | 最近日本字幕mv免费观看在线 | 亚洲午夜精品久久久久久久久 | 国产+日韩欧美 | 91色偷偷 | 99超碰在线观看 | 久久观看最新视频 | 日韩精品一区二区三区电影 | 黄色在线看网站 | 亚洲欧美视频在线 | 91视频麻豆 | 中文字幕成人一区 | 欧美精品xxx| 久久视频免费在线 | 日韩在线观看av | 五月天婷婷丁香花 | 二区三区毛片 | 欧美日韩在线看 | 久久精品欧美日韩精品 | 成人久久毛片 | 日韩精品一区二区不卡 | 欧美色黄 | 欧美另类老妇 | 久久久久久久久久久久av | 精品国产电影一区二区 | 欧美激情亚洲综合 | 成人97视频一区二区 | 麻豆视频在线免费 | 久久久久久国产精品久久 | 中文字幕在线第一页 | 中文字幕日本电影 | 亚洲成aⅴ人片久久青草影院 | 久久婷婷精品视频 | 日本精品中文字幕 | 日韩精品久久中文字幕 | 狠狠干天天 | 天天天天干 | 在线观看视频一区二区 | 丁香综合激情 | 在线观看久久久久久 | 亚洲精品国偷拍自产在线观看 | 中文字幕国产一区二区 | 亚洲天堂自拍视频 | 国产精品九九久久99视频 | 午夜婷婷网 | 欧美一级特黄高清视频 | 麻豆小视频在线观看 | 日韩专区在线播放 | 在线亚州| 成人久久久久久久久久 | 免费观看www7722午夜电影 | 在线观看av免费观看 | 中文在线8新资源库 | 免费碰碰 | 亚洲日本黄色 | 欧美成人精品三级在线观看播放 | 一区二区三区四区五区在线视频 | 国产精品视频永久免费播放 | 国产免费亚洲高清 | 久久综合久久综合久久综合 | avwww在线| 99精品久久99久久久久 | 在线а√天堂中文官网 | 久久综合成人 | 婷婷射五月 | 波多在线视频 | 亚洲美女视频在线 | 粉嫩aⅴ一区二区三区 | 开心激情五月网 | 五月婷婷欧美视频 | 日韩草比 | 国产黄在线看 | 日女人免费视频 | www.夜夜夜| 黄色小网站在线观看 | 天天草天天干天天 | 在线观看免费黄视频 | 天天插视频 | 麻豆视频免费入口 | 亚洲影视资源 | 69国产精品成人在线播放 | 国产小视频免费观看 | 国产丝袜高跟 | 日韩欧美精品在线 | 久久综合国产伦精品免费 | 激情五月婷婷综合网 | av在线官网| 69av久久| 久久久久久久久网站 | 五月婷网站| 久久久久久久久久伊人 | 欧美午夜精品久久久久久孕妇 | 国产精品二区在线 | 综合色伊人 | 久久免费精品 | 日韩成人在线免费观看 | 国产中文字幕国产 | 久久中文欧美 | 亚洲乱亚洲乱亚洲 | 亚洲视频久久久久 | 色综合天天在线 | 亚洲免费在线视频 | 久精品视频免费观看2 | 免费日韩一区二区三区 | 精品国产欧美 | 波多野结衣一区二区三区中文字幕 | 国产精品美乳一区二区免费 | 欧美午夜剧场 | 色搞搞 | 人人爽人人av | 丁香影院在线 | 91精品在线播放 | 色视频在线观看 | 精品一区精品二区高清 | 成人黄色大片在线观看 | 91精品推荐 | 欧美激情在线看 | 久久综合免费视频 | 国产在线a | 99视频在线精品国自产拍免费观看 | 国产精品白丝jk白祙 | 在线观看一区二区视频 | 久久天天躁狠狠躁亚洲综合公司 | 日韩欧美在线观看一区二区 | 91禁在线看 | 天天干一干| 国色天香永久免费 | av电影中文 | 在线 精品 国产 | 中文字幕免费在线看 | 视频在线观看日韩 | 欧美另类xxx | 国产精品高潮在线观看 | 一区二区三区日韩在线 | 在线视频你懂得 | 亚洲三级在线播放 | 国内精品久久久久影院男同志 | 国产精品a级 | 在线观看免费av片 | 91精品国产综合久久久久久久 | 久久久久区| 国产无套一区二区三区久久 | 欧美日韩国产精品一区二区三区 | 国产在线观看国语版免费 | 超碰公开97| 色播五月激情五月 | 天天躁日日躁狠狠躁av中文 | 99爱精品视频| 色亚洲网 | 久久久久免费 | 日韩欧美黄色网址 | 99精品视频免费看 | 超碰97在线看| 一区二区三区四区精品视频 | 日韩手机在线 | 国产伦精品一区二区三区无广告 | 91视频中文字幕 | 欧美精品九九99久久 | 91av电影在线观看 | 国产高清免费视频 | av在线a| 99精品在线看 | 国产一级在线观看视频 | 又黄又爽又无遮挡免费的网站 | 999久久久 | 在线观看中文字幕av | 精品久久一二三区 | 色老板在线视频 | 在线 欧美 日韩 | 免费在线观看一级片 | www.亚洲黄 | 欧洲一区精品 | 视频一区在线免费观看 | 伊人午夜| 六月丁香婷婷在线 | 韩日色视频| 色噜噜狠狠狠狠色综合久不 | 91香蕉国产在线观看软件 | 久久黄色a级片 | 午夜精品视频一区二区三区在线看 | 在线看国产一区 | 2019中文最近的2019中文在线 | 一本一本久久aa综合精品 | 9999精品免费视频 | 一区二区视频电影在线观看 | 成人a级黄色片 | 国产电影一区二区三区四区 | 久久99久久99精品免费看小说 | 国产一性一爱一乱一交 | 99久久精品国产观看 | 国产成人三级在线播放 | 中文字幕欧美三区 | 国产小视频在线免费观看视频 | 日韩女同一区二区三区在线观看 | 亚洲最快最全在线视频 | 2019中文最近的2019中文在线 | 欧美日韩高清免费 | 日日夜夜草 | 国产精品一区二区三区电影 | 91精品视屏 | 五月花激情 | 蜜臀91丨九色丨蝌蚪老版 | 国产高清免费av | 在线观看日韩精品视频 | 99久久婷婷国产综合精品 | 久久精品999| 成人黄色一级视频 | 亚洲黄色三级 | www.com久久久 | 2022久久国产露脸精品国产 | 亚洲精品女人久久久 | 久久久久在线 | 日韩精品视频在线免费观看 | 二区三区毛片 | 国产午夜精品福利视频 | 国产尤物视频在线 | 97精品久久 | av高清影院 | 欧美精品久久人人躁人人爽 | 欧美色图视频一区 | 五月激情天 | 久久久久亚洲精品中文字幕 | 久久久一本精品99久久精品 | 欧美日韩国产综合网 | av资源免费在线观看 | 西西大胆免费视频 | 高清av在线免费观看 | 开心激情网五月天 | 麻花豆传媒mv在线观看网站 | 91视频在线观看免费 | 黄色aa久久 | 91av视频免费观看 | 在线观看国产一区二区 | 日日夜操 | 亚洲精品色 | 欧美日韩国产在线精品 | 久久er99热精品一区二区三区 | 91精品国产综合久久福利不卡 | 久久久国产精品麻豆 | av中文字幕在线播放 | 成人av播放 | 天天躁日日躁狠狠躁av麻豆 | 波多野结衣久久精品 | 亚洲精品视| 日韩电影一区二区三区 | 国产精品成人aaaaa网站 | 天天综合操 | 色片网站在线观看 | 免费亚洲精品视频 | 91精品在线观看视频 | 不卡的av电影在线观看 | 日韩精品久久久久久久电影99爱 | 日韩三区在线观看 | 91人人爽久久涩噜噜噜 | 日本狠狠色| 欧美国产日韩一区二区三区 | 成人在线观看免费视频 | 亚洲国产精品500在线观看 | 亚洲激情视频 | av千婊在线免费观看 | 久久国产精品偷 | 亚洲精品在线免费观看视频 | 久久久国产精品视频 | 日本 在线 视频 中文 有码 | 在线看小早川怜子av | 免费a视频在线观看 | 成人黄性视频 | 国产精品热 | 麻豆精品在线 | 久久久久久久18 | 亚洲精品免费在线视频 | 久久久私人影院 | 日韩免费在线视频观看 | 久久黄色成人 | 99在线热播 | av色影院 | 久久在线看 | 亚洲色综合 | 国产黄色免费观看 | 96精品在线 | 精品免费久久久久 | 色狠狠婷婷| 日韩成年视频 | 男女视频国产 | 中文字幕在线看视频 | 狠狠色丁香婷婷综合最新地址 | 色www.| 欧美一区在线看 | av大片网站 | 91综合视频在线观看 | 国产一区高清在线 | 国产 在线观看 | 免费日韩一区 | 玖玖视频 | 福利电影久久 | 亚洲一级二级 | 人人看人人爱 | 国产视频欧美视频 | 免费av在线网 | 国产看片网站 | 久艹视频在线免费观看 | 天天草天天插 | 热99在线 | 亚洲情影院 | 久久免费电影 | 亚州精品天堂中文字幕 | 日韩欧美精品在线 | 337p日本大胆噜噜噜噜 | 国产精品久久在线 | 在线观看亚洲国产精品 | 色婷五月| 操高跟美女 | a级国产乱理伦片在线观看 亚洲3级 | 久久永久免费视频 | 欧美日韩视频在线一区 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 曰本免费av | 精品福利av | 中文在线8新资源库 | 日韩精品专区 | 国产免费资源 | av成年人电影 | 日韩在线精品 | 99久久精品午夜一区二区小说 | 日本视频久久久 | 中文字幕二区 | 久久99视频精品 | 香蕉在线观看 | 中文字幕黄色网 | 婷婷综合成人 | 91网址在线看 | 国产精品久久伊人 | 在线成人观看 | 麻豆视频在线看 | 激情片av | 亚洲日本激情 | 欧美精品一区二区在线观看 | 国产亚洲aⅴaaaaaa毛片 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产精品一区二区三区在线播放 | 五月花婷婷 | 日韩在线免费电影 | 亚洲精品理论 | 久久久免费看视频 | 在线观看韩国av | 国产九色视频在线观看 | 欧美亚洲成人xxx | 国产精品久久久久永久免费看 | 欧美一区中文字幕 | 亚洲精品久久久久www | 欧美日在线观看 | 香蕉视频在线免费看 | 中文字幕在线播放视频 | 97看片 | 日韩精品免费一区二区在线观看 | 在线色视频小说 | 69精品视频在线观看 | 福利视频区 | 欧美黑吊大战白妞欧美 | 96久久精品| 美女久久久久久久久久久 | 欧美成人69av | 久久艹艹 | 午夜精品久久久 | 国产高清久久久久 | 欧洲精品视频一区二区 | 免费看黄视频 | 91大神在线看 | 亚洲精品午夜久久久 | 成年人视频在线观看免费 | 片网站| 久久久亚洲电影 | 久久这里有 | 午夜18视频在线观看 | 97超碰资源总站 | 国产高清视频免费 | 日本久久影视 | 国产资源在线视频 | 狠狠干狠狠色 | 天天天色综合a | 99在线视频网站 | 亚洲精品在线视频观看 | 中文字幕 国产视频 | 国产精品18久久久久vr手机版特色 | 黄色网址中文字幕 | 成人h视频在线播放 | 免费在线观看a v | 一区二区三区影院 | 国产精品成人一区二区三区 | 中文在线a∨在线 | 天天要夜夜操 | 国产女人18毛片水真多18精品 | 欧美日韩一区二区三区在线免费观看 | 麻豆久久精品 | 婷婷中文字幕在线观看 | 国产精品video| 欧美日韩在线免费观看 | 91亚洲精品在线 | 狠狠狠狠狠色综合 | 亚洲精品大片www | 最近中文字幕mv免费高清在线 | 奇米四色影狠狠爱7777 | 国产精品第一页在线观看 | 国产一区二区三区网站 | 99久久er热在这里只有精品66 | 黄色小说视频网站 | 天天操夜操 | 99爱这里只有精品 | 四虎永久免费 | 久久婷婷色综合 | 日日夜夜天天 | 国产不卡网站 | 99国产在线观看 | 亚洲精品黄色在线观看 | 久久久国产精品人人片99精片欧美一 | 人人爱人人添 | 午夜精品电影一区二区在线 | 精品在线观看一区二区三区 | 国产精品1区| www.午夜视频 | 中文字幕一区二区三区精华液 | 国产精品国产三级国产不产一地 | 国产专区一 | 亚洲成人av片在线观看 | 999久久精品 | 欧美另类视频 | 免费精品国产va自在自线 | 亚洲精品国偷自产在线99热 | 91麻豆网站| 婷婷激情站| 久久久久久久99 | 激情五月在线视频 | 国产视频亚洲精品 | 久草五月 | 精品99在线 | 天天天天干 | 久久久免费毛片 | 国产免费视频一区二区裸体 | 久久不见久久见免费影院 | 91在线影院| 中文字幕在线观看免费高清电影 | 日韩电影精品 | 婷婷久久国产 | 欧美日韩综合在线观看 | 黄色成人av在线 | av免费高清观看 | 伊人热| 91九色porny蝌蚪视频 | 婷婷综合成人 | 夜色资源站wwwcom | 三级黄色免费 | 97国产人人| 国产男女爽爽爽免费视频 | 国产91对白在线 | 日日夜夜天天久久 | 欧美成人精品三级在线观看播放 | 98涩涩国产露脸精品国产网 | 青青河边草免费 | 亚洲天天在线日亚洲洲精 | 日韩精品欧美专区 | 色多视频在线观看 | 亚洲一级性 | 在线观看小视频 | 国产黄a三级三级三级三级三级 | 国产一区在线视频 | 欧美日韩午夜爽爽 | 久久久免费 | 久久99久久久久久 | 免费观看久久久 | 久草视频网 | 国内精品久久久久久 | 天堂中文在线视频 | 日韩精品中文字幕有码 | 日韩欧美高清在线 | 精品国产欧美一区二区 | 国产真实精品久久二三区 | 伊人婷婷综合 | 免费精品国产va自在自线 | 久久久亚洲麻豆日韩精品一区三区 | www.黄色网.com | 久久精品最新 | 天天爱天天操天天爽 | 日本中文字幕在线一区 | av一区二区在线观看中文字幕 | 久久精品国产精品亚洲精品 | 91精品在线观看入口 | 成片视频免费观看 | 日韩视频一区二区在线 | 国产一区高清在线观看 | 日韩 在线a | 人人爽人人爽人人片av | 国产h在线播放 | www天天干com | 一区二区三区在线视频111 | 免费日韩 | 日本3级在线观看 | 欧美日韩在线观看一区 | 99精品久久久久 | 国产亚洲成人网 | 精品一二区 | 欧美色图p| 国产高清视频在线 | 久久资源总站 | 精品一区二区在线免费观看 | 日韩在线中文字幕视频 | 在线观看国产一区二区 | 精品999国产| 美女免费电影 | 日本在线视频一区二区三区 | 国产91av视频在线观看 | 99视频99 | 激情电影在线观看 | 在线成人一区二区 | 欧美色操 | 婷婷中文字幕综合 | 99久热在线精品视频观看 | avav片| 人人爱人人舔 | 香蕉视频4aa| 久久不卡国产精品一区二区 | 一区二区三区在线免费播放 | 五月婷色 | 亚洲另类xxxx | 黄色小说免费在线观看 | 正在播放国产精品 | 少妇bbb搡bbbb搡bbbb | av超碰免费在线 | av不卡免费在线观看 | 一区二区三区精品久久久 | 日韩在线高清免费视频 | 91大神电影 | 91精品国产91久久久久久三级 | 国产视频网站在线观看 | 91大神电影| 日日干,天天干 | 超碰在线观看97 | 成人av一区二区在线观看 | 欧美色黄 | 在线视频你懂 | www.久久com| 免费视频成人 | 久久国产精品一区二区三区四区 | 视频在线99re | 日韩av电影中文字幕在线观看 | 国产女人18毛片水真多18精品 | 欧美一区二区三区四区夜夜大片 | 精品在线亚洲视频 | 在线av资源 | 欧美国产亚洲精品久久久8v | 天天做日日做天天爽视频免费 | 免费国产ww | 丁香激情五月 | 91免费观看视频网站 | 日韩国产欧美在线视频 | 免费网站在线 | 在线观看黄色免费视频 | 久久官网 | 久国产在线播放 | 久久国产精品99久久人人澡 | 久久久久北条麻妃免费看 | 日韩最新中文字幕 | 天天干天天干 | 色哟哟国产精品 | 久久精品国产精品亚洲 | 久久免费视频一区 | 激情xxxx | 天天操天天干天天 | 玖玖精品在线 | 久草观看 | 99国内精品久久久久久久 | 日韩一级黄色大片 | 亚州日韩中文字幕 | 日韩精品一区二区在线视频 | 肉色欧美久久久久久久免费看 | 日韩精品三区四区 | 99久久婷婷国产综合亚洲 | 日日碰狠狠躁久久躁综合网 | 美女久久久久久久久久 | 久久精品网址 | 国产成人在线一区 | 色999视频 | 一区二区三区四区五区在线视频 | 在线观看91久久久久久 | 91精品国产成人www | 国产视频在线免费观看 | 日日干夜夜草 | 婷久久 | 亚洲国产精品va在线看黑人动漫 | 国产精品久久久久久久久久 | 一级黄色a视频 | 日日操夜 | 伊人伊成久久人综合网站 | 欧美国产日韩激情 | 韩日精品视频 | 久久一区国产 | 2022中文字幕在线观看 | 中文字幕在线观看91 | 黄色免费网战 | 黄色成人在线网站 | 久久精品国产99国产 | 九九99视频 | 欧美韩国在线 | 天天色天天综合网 | 日韩av快播电影网 | 91福利社在线观看 | 久久这里只有精品1 | 热久在线 | 国产精品福利久久久 | 久久av免费观看 | 亚洲日本韩国一区二区 | 在线国产一区 | 日日夜夜婷婷 | 麻豆视频在线免费看 | 六月激情丁香 | 欧美经典久久 | 久久免费视频精品 | 天天色草| 欧美成年人在线观看 | 久久久久久久久久久久久久电影 | 婷婷六月天综合 | 看片网站黄色 | 国产精品综合久久久久久 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 日韩午夜在线 | 91精品国产92久久久久 | www.777奇米 | 日韩午夜av电影 | 国产精品9999久久久久仙踪林 | 免费h在线观看 | 日韩中文字幕第一页 | 欧美二区三区91 | 777视频在线观看 | 在线观看日本高清mv视频 | 国际精品久久 | 99九九热只有国产精品 | 视频在线精品 | 国产人成一区二区三区影院 | 国产成人免费高清 | 亚洲欧洲日韩在线观看 | 亚洲午夜久久久久久久久电影网 | 九九视频免费在线观看 | 久久黄网站 | 国产日产精品一区二区三区四区的观看方式 | 在线播放 日韩专区 | 精品久久久久久久久中文字幕 | 国产又粗又猛又色又黄网站 |