一、Spring Data Redis
Spring Data Redis 是Spring Data 下的一个模块;用于简化对于redis的操作。
1.Redis的安装:
(1)安装环境:
Redis 版本:3.0.0;环境:Linux。
(2)安装gcc编译器:
执行命令:yum install gcc-c++
(3)解压安装包:
执行命令:tar -zxf redis-3.0.0.tar.gz
(4)进入解压目录进行编译:
执行命令:cd redis-3.0.0 和 make。
(5)将Redis安装到指定目录:
执行命令:make PREFIX=/usr/local/redis install。
(6)启动Redis:
前置启动:./redis-server
建议后置启动:先将 redis.conf 文件拷贝到 redis 的安装目录
cp redis.conf /usr/local/redis/bin;
编辑 redis.conf 文件修改:daemonize yes。
启动: ./redis-server redis.conf。
查看 redis 进程:ps aux|grep redis。
关闭后置启动的 Redis:./redis-cli shutdown。
2.创建整合环境:
-
添加启动器:
使用IDEA示例
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 修改properties或yml配置文件:
spring.redis.host=192.168.226.130
spring.redis.port=6379
- 测试:
@SpringBootTest
public class TestRedis {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String ,Users> redisTemplate;
//字符串类型
@Test
public void TestString() {
stringRedisTemplate.opsForValue().set("key1","value1");
String key1 = stringRedisTemplate.opsForValue().get("key1");
System.out.println(key1);
}
//对象类型
@Test
public void TestObject2(){
Users users = new Users();
users.setId(1);
users.setName("Dave");
users.setAge(20);
redisTemplate.opsForValue().set("users",users);
Object object = redisTemplate.opsForValue().get("users");
System.out.println(object);
}
}

- 自定义RedisTemplate解决乱码问题:
默认RedisTemplate<Object, Object> 使用JDK进行序列化,存储到redis中会出现特殊乱码,我们使用JSON序列化对象后存储。在配置类中为一个对象创建指定的 RedisTemplate 操作redis。
@Configuration
public class Config {
@Bean
public RedisTemplate<String, Users> getRedisTemplate(RedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(factory);
//更改值序列化
Jackson2JsonRedisSerializer<Users> jackson2Json = new Jackson2JsonRedisSerializer<>(Users.class);
redisTemplate.setValueSerializer(jackson2Json);//设置value的序列化
redisTemplate.setHashValueSerializer(jackson2Json);//设置hashval的序列化
//更改键序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
return redisTemplate;
}
}
- 测试:
@SpringBootTest
public class TestRedis {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String ,Users> redisTemplate;
//字符串类型
@Test
public void TestString() {
stringRedisTemplate.opsForValue().set("key1","value1");
String key1 = stringRedisTemplate.opsForValue().get("key1");
System.out.println(key1);
}
//对象类型
@Test
public void TestObject(){
Users users = new Users();
users.setId(2);
users.setName("Dave");
users.setAge(20);
redisTemplate.opsForValue().set("user",users);
Users user = redisTemplate.opsForValue().get("user");
System.out.println(user);
}
}
3. 操作Redis-Cluster:
- 搭建Redis集群:
搭建Redis集群
启动Redis集群。

- 修改properties配置文件:
spring.redis.cluster.nodes[0]=192.168.226.130:8001
spring.redis.cluster.nodes[1]=192.168.226.130:8002
spring.redis.cluster.nodes[2]=192.168.226.130:8003
spring.redis.cluster.nodes[3]=192.168.226.130:8004
spring.redis.cluster.nodes[4]=192.168.226.130:8005
spring.redis.cluster.nodes[5]=192.168.226.130:8006
- 测试:
@SpringBootTest
public class TestRedis {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String ,Users> redisTemplate;
//字符串类型
@Test
public void TestString() {
stringRedisTemplate.opsForValue().set("key1","value1");
String key1 = stringRedisTemplate.opsForValue().get("key1");
System.out.println(key1);
}
//对象类型
@Test
public void TestObject(){
Users users = new Users();
users.setId(2);
users.setName("Dave");
users.setAge(20);
redisTemplate.opsForValue().set("user",users);
Users user = redisTemplate.opsForValue().get("user");
System.out.println(user);
}
}

二、Spring Data Solr
- Solr安装:
Solr的安装
关闭防火墙启动Solr服务。
1.Spring Data Solr:
-
创建项目:
IDEA工具创建
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
- 修改properties配置文件:
spring.data.solr.host=http://192.168.226.130:8080/solr
- 测试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestSolr {
@Autowired
private SolrClient solrClient;
//添加
@Test
public void addSolr()throws Exception{
//创建SolrInputDocument对象
SolrInputDocument solrInputFields = new SolrInputDocument();
solrInputFields.addField("id","01");
solrInputFields.addField("title","洗脸盆");
SolrInputDocument solrInputFields2 = new SolrInputDocument();
solrInputFields2.addField("id","02");
solrInputFields2.addField("title","大号洗脸盆");
solrClient.add(solrInputFields);
solrClient.add(solrInputFields2);
solrClient.commit();
}
//查找
@Test
public void queryDocument() throws IOException, SolrServerException {
//创建SolrQuery对象:封装查询条件
SolrQuery entries = new SolrQuery();
entries.setQuery("title:洗脸");
QueryResponse query = solrClient.query(entries);
SolrDocumentList results = query.getResults();
long num = results.getNumFound();
System.out.println("总条数:"+num);
for (SolrDocument solr:results) {
System.out.println(solr.get("id"));
System.out.println(solr.get("title"));
}
}
}

2.操作SolrCloud集群:
搭建SolrCloud集群。
启动zookeeper集群。

- 修改parent版本:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
- 修改properties文件:
spring.data.solr.zk-host=192.168.226.130:2181,192.168.226.130:2182,192.168.226.130:2183
spring.data.solr.defaultCollection=collection2
- 创建cluster配置类:
@Configuration
public class ClusterConfiguration {
@Value("${spring.data.solr.zk-host}")
private String zkHost;
@Value("${spring.data.solr.defaultCollection}")
private String defaultCollection;
@Bean
public CloudSolrClient getCloudSolrClient(){
//创建CloudSolrClient对象
CloudSolrClient cloudSolrClient = new CloudSolrClient(zkHost);
cloudSolrClient.setDefaultCollection(defaultCollection);
return cloudSolrClient;
}
}
- 测试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestSolrCloud {
@Autowired
private CloudSolrClient cloudSolrClient;
//添加
@Test
public void addSolr()throws Exception{
//创建SolrInputDocument对象
SolrInputDocument solrInputFields = new SolrInputDocument();
solrInputFields.addField("id","01");
solrInputFields.addField("title","JavaEE");
SolrInputDocument solrInputFields2 = new SolrInputDocument();
solrInputFields2.addField("id","02");
solrInputFields2.addField("title","JavaSE");
cloudSolrClient.add(solrInputFields);
cloudSolrClient.add(solrInputFields2);
cloudSolrClient.commit();
}
//查找
@Test
public void queryDocument() throws IOException, SolrServerException {
//创建SolrQuery对象:封装查询条件
SolrQuery entries = new SolrQuery();
entries.setQuery("title:JavaEE");
QueryResponse query = cloudSolrClient.query(entries);
SolrDocumentList results = query.getResults();
long num = results.getNumFound();
System.out.println("总条数:"+num);
for (SolrDocument solr:results) {
System.out.println(solr.get("id"));
System.out.println(solr.get("title"));
}
}
}



网友评论