Redis部署到阿里云:

下载redis源码,编译,允许远程访问的配置

阿里云安全组设置:

SSH连过去:

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

tar xzf redis-4.0.9.tar.gz

cd redis-4.0.9

make

编译完成后cd到目录

vi redis.conf

bind改成0.0.0.0

protected-mode改成no

daemonize改为no(可选)

cd到src目录,运行redis:

./redis-server

也可以用守护进程的方式启动

设置密码:这一步是必须的,防止被人恶意连接

./redis-cli

config set requirepass [your password]

如果要关闭redis:

./redis-cli -p 6379 shutdown即可

测试是否远程连接成功的方式:采用RedisDesktopManager连接

SpringBoot整合Redis:

依赖:

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

注意:SpringBoot默认操作Redis使用的是Lettuce而不是Jedis

网上大佬说Lettuce比Jedis性能好,我不了解,不做评论

如果想用Jedis,需要自行配置:

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>

下面是配置文件,其中Redis的配置是必须的,Redis Pool配置可选

Jedis配置文件:

# Redis
spring.redis.database=0
spring.redis.host=[Redis服务器IP]
spring.redis.port=6379
spring.redis.password=[密码]
spring.redis.timeout=3000
# Redis Pool
spring.redis.jedis.pool.max-idle=300
spring.redis.jedis.pool.min-idle=300
spring.redis.jedis.pool.max-active=2000
spring.redis.jedis.pool.max-wait=1000

Lettuce配置文件:我使用Lettuce的时候出现了各种BUG,简易还是用稳妥的Jedis吧

# Redis
spring.redis.database=0
spring.redis.host=[Redis服务器IP]
spring.redis.port=6379
spring.redis.password=[密码]
spring.redis.timeout=3000
# Redis Pool
spring.redis.lettuce.pool.max-idle=300
spring.redis.lettuce.pool.min-idle=300
spring.redis.lettuce.pool.max-active=2000
spring.redis.lettuce.pool.max-wait=1000

使用Spring的StringRedisTemplate进行简单的操作:

package org.dreamtech.redisdemo.controller;

import java.util.HashMap;
import java.util.Map; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class RedisTestController { @Autowired
private StringRedisTemplate redisTpl; private Map<String, Object> modelMap = new HashMap<String, Object>(); @GetMapping("/add")
private Object add(String name) {
modelMap.clear();
if (name != null && !name.equals("")) {
redisTpl.opsForValue().set("name", name);
modelMap.put("success", true);
} else {
modelMap.put("success", false);
}
return modelMap;
} @GetMapping("/get")
private Object get() {
modelMap.clear();
String name = redisTpl.opsForValue().get("name");
modelMap.put("success", true);
modelMap.put("name", name);
return modelMap;
}
}

访问:

http://localhost:8080/add?name=xxx   设置name参数

http://localhost:8080/get   获取name参数

如果能够获取到设置的参数,说明整合redis成功

Redis工具类的简单封装:对其他数据类型可以自行进行封装,我这里只是最简单的操作封装

package org.dreamtech.redisdemo.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component; /**
* Redis工具类
*
* @author Xu Yiqing
*
*/
@Component
public class RedisUtil {
@Autowired
private StringRedisTemplate redisTpl; /**
* SET操作
*
* @param key KEY
* @param value VALUE
* @return 是否成功
*/
public boolean set(String key, String value) {
try {
redisTpl.opsForValue().set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} /**
* GET操作
*
* @param key KEY
* @return VALUE
*/
public String get(String key) {
try {
String value = redisTpl.opsForValue().get(key);
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}

如何将对象存入Redis呢?

无法将对象存入Redis!但是可以把对象转为JSON存入Redis

实现:

JSON工具类封装:

package org.dreamtech.redisdemo.util;

import java.io.IOException;
import org.springframework.util.StringUtils;
import com.fasterxml.jackson.databind.ObjectMapper; @SuppressWarnings("unchecked")
public class JsonUtils { private static ObjectMapper objectMapper = new ObjectMapper(); /**
* 对象转字符串
*
* @param <T> 泛型
* @param obj 对象
* @return 字符串
*/
public static <T> String obj2String(T obj) {
if (obj == null) {
return null;
}
try {
return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} /**
* 字符串转对象
*
* @param <T> 泛型
* @param str 字符串
* @param clazz 对象类型
* @return 对象
*/
public static <T> T string2Obj(String str, Class<T> clazz) {
if (StringUtils.isEmpty(str) || clazz == null) {
return null;
}
try {
return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}

实体类:

package org.dreamtech.redisdemo.domain;

public class User {
private String username;
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}

Controller:

package org.dreamtech.redisdemo.controller;

import java.util.HashMap;
import java.util.Map; import org.dreamtech.redisdemo.domain.User;
import org.dreamtech.redisdemo.util.JsonUtils;
import org.dreamtech.redisdemo.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class RedisTestController { @Autowired
private RedisUtil redis; private Map<String, Object> modelMap = new HashMap<String, Object>(); @GetMapping("/add")
private Object add(String name) {
modelMap.clear();
boolean flag = redis.set("name", "redis");
if (flag) {
modelMap.put("success", true);
} else {
modelMap.put("success", false);
}
return modelMap;
} @GetMapping("/get")
private Object get() {
modelMap.clear();
String name = redis.get("name");
modelMap.put("success", true);
modelMap.put("name", name);
return modelMap;
} @GetMapping("/setuser")
private Object setUser() {
modelMap.clear();
User user = new User();
user.setUsername("admin");
user.setPassword("passsword");
boolean flag = redis.set("user", JsonUtils.obj2String(user));
if (flag) {
modelMap.put("success", true);
} else {
modelMap.put("success", false);
}
return modelMap;
} @GetMapping("/getuser")
private Object getUser() {
modelMap.clear();
String tempUser = redis.get("user");
User user = JsonUtils.string2Obj(tempUser, User.class);
modelMap.put("user", user);
modelMap.put("success", true);
return modelMap;
}
}

如果感觉Controller层测试太复杂,可以采用SpringBootTest:

package org.dreamtech.redisdemo;

import org.dreamtech.redisdemo.domain.User;
import org.dreamtech.redisdemo.util.JsonUtils;
import org.dreamtech.redisdemo.util.RedisUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class)
@SpringBootTest(classes = { RedisdemoApplication.class })
public class RedisTest { @Autowired
private RedisUtil redis; @Test
public void test() {
User tempUser = new User();
tempUser.setUsername("admin");
tempUser.setPassword("password");
String user = JsonUtils.obj2String(tempUser);
redis.set("user", user);
String result = redis.get("user");
System.out.println(result);
}
}

SpringBoot 2.x (10):整合Redis的更多相关文章

  1. 实例讲解Springboot以Template方式整合Redis及序列化问题

    1 简介 之前讲过如何通过Docker安装Redis,也讲了Springboot以Repository方式整合Redis,建议阅读后再看本文效果更佳: (1) Docker安装Redis并介绍漂亮的可 ...

  2. springboot学习笔记-3 整合redis&mongodb

    一.整合redis 1.1 建立实体类 @Entity @Table(name="user") public class User implements Serializable ...

  3. SpringBoot学习- 5、整合Redis

    SpringBoot学习足迹 SpringBoot项目中访问Redis主要有两种方式:JedisPool和RedisTemplate,本文使用JedisPool 1.pom.xml添加dependen ...

  4. 【SpringBoot】Springboot2.x整合Redis(一)

    备注: springboto整合redis依赖于spring-boot-starter-data-redis这个jar 一,项目环境和依赖 1.POM.xml配置 <parent> < ...

  5. springboot笔记10——整合Redis

    依赖 <dependencies> <!--web依赖--> <dependency> <groupId>org.springframework.boo ...

  6. SpringBoot使用注解方式整合Redis

    1.首先导入使用Maven导入jar包 <dependency> <groupId>org.springframework.boot</groupId> <a ...

  7. 实例讲解Springboot以Repository方式整合Redis

    1 简介 Redis是高性能的NoSQL数据库,经常作为缓存流行于各大互联网架构中.本文将介绍如何在Springboot中整合Spring Data Redis,使用Repository的方式操作. ...

  8. SpringBoot(三)整合Redis

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...

  9. SpringBoot进阶教程(二十六)整合Redis之共享Session

    集群现在越来越常见,当我们项目搭建了集群,就会产生session共享问题.因为session是保存在服务器上面的.那么解决这一问题,大致有三个方案,1.通过nginx的负载均衡其中一种ip绑定来实现( ...

  10. SpringBoot进阶教程(二十九)整合Redis 发布订阅

    SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Ra ...

随机推荐

  1. python中元组tuple

    python中列表(list)和元组(tuple)有很多相似的地方,它们都是容器,由一系列的对象构成,都可以包含任意类型的元素,甚至是一个序列.   list和tuple的不同首先体现在写法上: li ...

  2. shell之cut和tr 的命令的使用

    [root@data-1-3 ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ...

  3. Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

  4. 火狐浏览器安装VULTR笔记

    1.购买一台vultr服务器, 支持支付宝扫码支付,直接美刀转人民币实时结算:优先选日本的,然后美国的; 购买服务器步骤: Server Location: Tokyo Japan Server Ty ...

  5. PhpStorm中如何配置SVN,详细操作方法

    1.简介: PhpStorm是一个轻量级且便捷的PHP IDE,其提供的智能代码补全,快速导航以及即时错误检查等功能大大提高了编码效率.它是一款商业的 PHP 集成开发工具,以其独特的开发便利性,短时 ...

  6. JavaScript-Tool:jquery.zsign(电子签章)-un

    ylbtech-JavaScript-Tool:jquery.zsign(电子签章) 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作 ...

  7. python GUI尝鲜(但当涉猎,见往事耳)

    第一步:简单的窗口和内容 import tkinter as tk window = tk.Tk() # 窗口obj对象 window.title('my TK') # 窗口名字 window.geo ...

  8. 【Hive】Hive笔记:Hive调优总结——数据倾斜,join表连接优化

    数据倾斜即为数据在节点上分布不均,是常见的优化过程中常见的需要解决的问题.常见的Hive调优的方法:列剪裁.Map Join操作. Group By操作.合并小文件. 一.表现 1.任务进度长度为99 ...

  9. jQuery EasyUI API 中文文档 - Tree树使用介绍

    用 $.fn.tree.defaults 重写了 defaults. 依赖 draggable droppable 用法 Tree 能在 <ul> 元素里定义,此标记可以定义为叶节点和子节 ...

  10. wmware7安装xp错误:虚拟CPU已经入关闭状态

    wm7安装xp错误提示: 虚拟CPU已经入关闭状态.这会造成物理计算机重新启动.这可能是虚拟机操作系统的错误或VMware Workstation软件中的一个配置不正确. 这种情是硬盘模式为AHCI模 ...