服务器命令:
- ping:测试连接是否存活
- echo:在命令行打印内容
- select:选择数据库
- redis 数据库编号从 0 ~ 15,我们可以选择任意一个数据库来进行存取数据
- redis 数据库编号从 0 ~ 15,我们可以选择任意一个数据库来进行存取数据
- quit:退出连接
- dbsize:返回当前数据库中的 key 的数量
- info:获取服务的信息和统计
- flushdb:删除当前所选库中所有 key
- flushall:清除所有数据中的所有 key
Spring 整合 Redis:
- pom文件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.1.7.RELEASE</spring.version> <jackson.version>2.5.0</jackson.version> </properties> <dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.6.0.RELEASE</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <!-- mybatis 包 --> <!--mybatis spring 插件 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <!-- mysql连接 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!-- 数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.12</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.4</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- json --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!-- 文件上传 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>22.0</version> </dependency> </dependencies>
- 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:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.qcby"></context:component-scan> <!-- redis 相关配置 --> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="300" /> <property name="maxWaitMillis" value="300" /> <property name="testOnBorrow" value="true" /> </bean> <bean id="JedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="62.234.35.76" p:port="6379" p:pool-config-ref="poolConfig"/> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="JedisConnectionFactory" /> </bean> </beans>
- 实体类:
package com.qcby.model; import java.io.Serializable; public class Account implements Serializable { private Integer id; private String name; public Account() { } public Account(Integer id, String name) { this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Account{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
- 工具类:
package com.qcby.util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Service; import java.util.*; import java.util.concurrent.TimeUnit; @Service public class RedisCacheUtil { @Autowired @Qualifier("redisTemplate") //指定注入对象的 id 值 public RedisTemplate redisTemplate; /** * 缓存基本的对象 Integet String 实体类等 */ public <T>ValueOperations<String,T> setCacheObject(String key,T value){ ValueOperations<String,T> operations = redisTemplate.opsForValue(); operations.set(key,value); return operations; } public <T>ValueOperations<String,T> setCacheObject(String key,T value,long time){ ValueOperations<String,T> operations = redisTemplate.opsForValue(); operations.set(key,value,time,TimeUnit.SECONDS); return operations; } /** * 获得缓存的基本对象 */ public <T> T getCacheObject(String key/*,ValueOperations<String,T> operation */){ ValueOperations<String,T> operations = redisTemplate.opsForValue(); return operations.get(key); } /** * 缓存 list 数据 */ public <T>ListOperations<String,T> setCacheList(String key, List<T> dataList){ ListOperations listOperations = redisTemplate.opsForList(); if( dataList != null){ int size = dataList.size(); for (int i = 0; i < size; i++) { listOperations.rightPush(key,dataList.get(i)); } } return listOperations; } /** * 获得缓存 list 对象 */ public <T> List<T> getCacheList(String key){ List<T> dataList = new ArrayList<T>(); ListOperations<String,T> listOperations = redisTemplate.opsForList(); Long size = listOperations.size(key); for (int i = 0; i < size; i++) { dataList.add((T) listOperations.leftPop(key)); } return dataList; } /** * 缓存set */ public <T>BoundSetOperations<String,T> setCacheSet(String key, Set<T> dataSet){ BoundSetOperations<String,T> setOperations = redisTemplate.boundSetOps(key); Iterator<T> it = dataSet.iterator(); while (it.hasNext()){ setOperations.add(it.next()); } return setOperations; } /** * 获得缓存的 set */ public <T> Set<T> getCacheSet(String key){ Set<T> dataSet = new HashSet<T>(); BoundSetOperations<String,T> operations = redisTemplate.boundSetOps(key); for (int i = 0; i < operations.size(); i++) { dataSet.add(operations.pop()); } return dataSet; } /** * 缓存 Map */ public <T> HashOperations<String,String,T> setCacheMap(String key,Map<String,T> dataMap){ HashOperations hashOperations = redisTemplate.opsForHash(); if(dataMap != null){ for(Map.Entry<String,T> entry : dataMap.entrySet()){ hashOperations.put(key,entry.getKey(),entry.getValue()); } } return hashOperations; } /** * 获得缓存的 Map */ public <T> Map<String,T> getCacheMap(String key){ Map<String,T> map = redisTemplate.opsForHash().entries(key); return map; } /** * 缓存 Map */ public <T> HashOperations<String,Integer,T> setCacheIntegerMap(String key,Map<Integer,T> dataMap){ HashOperations hashOperations = redisTemplate.opsForHash(); if(hashOperations != null){ for (Map.Entry<Integer,T> entry : dataMap.entrySet()){ hashOperations.put(key,entry.getKey(),entry.getValue()); } } return hashOperations; } /** * 获得缓存的 Map */ public <T> Map<Integer,T> getCacheIntegerMap(String key){ Map<Integer,T> map = redisTemplate.opsForHash().entries(key); return map; } }
- 测试:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:application.xml") public class AccountServiceTest { @Autowired RedisCacheUtil redisCacheUtil; @Autowired RedisTemplate redisTemplate; @Test public void selectAll(){ List<Account> accounts = new ArrayList<>(); for (int i = 0; i < 10; i++) { Account a = new Account(); a.setId(i); a.setName("zhangsan"); accounts.add(a); } redisCacheUtil.setCacheObject("key1",accounts); List<Account> key1 = redisCacheUtil.getCacheObject("key1"); System.out.println(key1); } }