1、安装Redis

我们在VMware中安装CentOS 64位系统后,在用户目录下下载安装Redis。

下载redis目前最稳定版本也是功能最完善,集群支持最好并加入了sentinel(哨兵-高可用)功能的redis-stable版,
 
 
wget http://download.redis.io/releases/redis-stable.tar.gz
tar -xzvf redis-stable.tar.gz
cd redis-stable
make PREFIX=/usr/local/redis01 install
cd /usr/local/redis01/bin

加上`&`号使redis以后台程序方式运行

./redis-server &

或者也可以到 redis-stable/src目录下进行启动。

检测后台进程是否存在

ps -ef |grep redis

检测6379端口是否在监听

netstat -lntp | grep 6379

或者我们可以直接到redis-stable目录下修改配置文redis.conf,找到如下配置:

daemonize yes

# When running daemonized, Redis writes a pid file in /var/run/redis.pid by
# default. You can specify a custom pid file location here.
pidfile "/var/run/redis/redis01.pid"

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 7001

将daemonize值改为yes,修改进行pid的存在路径,然后重新指定一下port端口。

最后我们设置一下redis的log日志存放的地方,如果没有redis目录,需要切换到路径下进行新建。

logfile "/var/log/redis/redis01.log"

修改配置文件后我们需要指定使用哪个配置文件启动Redis

./redis-server ../redis.conf

用`redis-cli`客户端检测连接是否正常

./redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key "hello world"
OK

我们可以在Windows下直接下载一个RedisClient直接连接VMware中安装的Redis即可。如下图。

如果连接不上,需要关闭一下防火墙,使用

iptables -F

来禁用linux的防火墙或者使用:

vi /etc/selinux/config

然后把修改 SELINUX=enforcing的值为disabled

 

Spring Boot集成Redis

在mazhi工程下新建Maven Module,名称为mazhi-redis,然后在 pom.xml文件中添加redis的包引用和spring boot的包引用,如下:

 <!-- Add typical dependencies for a web application -->
    <dependencies>
       <dependency>
			<groupId>org.mazhi</groupId>
			<artifactId>mazhi-core</artifactId>
			<version>0.0.1-SNAPSHOT</version>
	   </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
         <!-- redius  -->
	    <dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-data-redis</artifactId>
			<version>1.0.0.RELEASE</version>
		</dependency>
    </dependencies>

然后引入application.yml文件,指定端口为8081。并且在src/java/main的org.mazhi.redis目录下新建Application.java文件,内容如下:

@SpringBootApplication
public class Application {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

下面就来为系统配置Redis了,在org.mazhi.redis.config目录下新建RedisCacheConfig.java文件,内容如下:

@Configuration
@PropertySource(value = "classpath:/redis.properties")
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {

		  @Value("${spring.redis.host}")
		  private String host;
		  @Value("${spring.redis.port}")
		  private int port;
		  @Value("${spring.redis.timeout}")
		  private int timeout;

		  @Bean
		  public KeyGenerator wiselyKeyGenerator(){
		      return new KeyGenerator() {
		          public Object generate(Object target, Method method, Object... params) {
		              StringBuilder sb = new StringBuilder();
		              sb.append(target.getClass().getName());
		              sb.append(method.getName());
		              for (Object obj : params) {
		                  sb.append(obj.toString());
		              }
		              return sb.toString();
		          }
		      };
		  }
		  @Bean
		  public JedisConnectionFactory redisConnectionFactory() {
		      JedisConnectionFactory factory = new JedisConnectionFactory();
		      factory.setHostName(host);
		      factory.setPort(port);
		      factory.setTimeout(timeout); //设置连接超时时间
		      return factory;
		  }
		  @Bean
		  public CacheManager cacheManager(RedisTemplate redisTemplate) {
		      RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
		      // Number of seconds before expiration. Defaults to unlimited (0)
		      cacheManager.setDefaultExpiration(10); //设置key-value超时时间
		      return cacheManager;
		  }
		  @Bean
		  public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
		      StringRedisTemplate template = new StringRedisTemplate(factory);
		      setSerializer(template); //设置序列化工具,这样ReportBean不需要实现Serializable接口
		      template.afterPropertiesSet();
		      return template;
		  }
		  private void setSerializer(StringRedisTemplate template) {
		      Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
		      ObjectMapper om = new ObjectMapper();
		      om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
		      om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
		      jackson2JsonRedisSerializer.setObjectMapper(om);
		      template.setValueSerializer(jackson2JsonRedisSerializer);
		  }
}

然后新建redis.properties配置文件,内容如下:

spring.redis.database=0
spring.redis.host=192.168.2.129
# Login password of the redis server.
spring.redis.password=
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.max-wait=-1
spring.redis.pool.min-idle=0
spring.redis.port=7001
# Name of Redis server.
spring.redis.sentinel.master=
# Comma-separated list of host:port pairs.
spring.redis.sentinel.nodes=
spring.redis.timeout=0

注意指定spring.redis.host和spring.redis.port为你的redis配置。

在org.mazhi.redis.web目录下新建RedisTestCtrl.java,对Redis进行简单的CRUD操作,如下:

@RestController
@RequestMapping(value = "/redis")
public class RedisTestCtrl {
	@Autowired
	private StringRedisTemplate redisTemplate;

	@RequestMapping(value = "/addKey")
	public void addKey() {
		redisTemplate.execute(new RedisCallback<Object>() {
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                connection.set(  // 插入键为test,值为hello的键值对
                        redisTemplate.getStringSerializer().serialize("test"),
                        redisTemplate.getStringSerializer().serialize("hello")
                );
                return null;
            }
       });  

	}

	@RequestMapping(value = "/deleteKey")
	public void deleteKey() {
		redisTemplate.delete("test");  // 删除数据库中键为test的键值对

	}
}

这样在浏览器中访问一下:

http://localhost:8081/redis/addKey

执行添加的url后,可以在RedisClient中查看,如下:

然后执行:

http://localhost:8081/redis/delete

查看RedisClient,键值被删除。

 
 
 
 
 
 
 
 
 
 
 
 
 
 

剑指架构师系列-Redis安装与使用的更多相关文章

  1. 剑指架构师系列-Redis集群部署

    初步搭建Redis集群 克隆已经安装Redis的虚拟机,我们使用这两个虚拟机中的Redis来搭建集群. master:192.168.2.129 端口:7001 slave:192.168.2.132 ...

  2. 剑指架构师系列-MySQL的安装及主从同步

    1.安装数据库 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-commun ...

  3. 剑指架构师系列-Nginx的安装与使用

    Nginx可以干许多事情,在这里我们主要使用Nginx的反向代理与负载均衡功能. 1.Nginx的下载安装 在安装Nginx前需要安装如下软件: GCC  Nginx是C写的,需要用GCC编译 PCR ...

  4. 剑指架构师系列-Logstash分布式系统的日志监控

    Logstash主要做由三部署组成: Collect:数据输入 Enrich:数据加工,如过滤,改写等 Transport:数据输出 下面来安装一下: wget https://download.el ...

  5. 剑指架构师系列-持续集成之Maven+Nexus+Jenkins+git+Spring boot

    1.Nexus与Maven 先说一下这个Maven是什么呢?大家都知道,Java社区发展的非常强大,封装各种功能的Jar包满天飞,那么如何才能方便的引入我们项目,为我所用呢?答案就是Maven,只需要 ...

  6. 剑指架构师系列-Linux下的调优

    1.I/O调优 CentOS下的iostat命令输出如下: $iostat -d -k 1 2 # 查看TPS和吞吐量 参数 -d 表示,显示设备(磁盘)使用状态:-k某些使用block为单位的列强制 ...

  7. 剑指架构师系列-MySQL调优

    介绍MySQL的调优手段,主要包括慢日志查询分析与Explain查询分析SQL执行计划 1.MySQL优化 1.慢日志查询分析 首先需要对慢日志进行一些设置,如下: SHOW VARIABLES LI ...

  8. 剑指架构师系列-ActiveMQ队列的使用

    安装ActiveMQ只需要下载包后解压,然后就可以启动与关闭ActiveMQ了,如下: ./activemq start ./activemq stop 访问管理页面: http://10.10.20 ...

  9. 剑指架构师系列-spring boot的logback日志记录

    Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志 ...

随机推荐

  1. centos系统php5.6版本安装gd扩展库

    由于项目需要显示验证码登录系统,所以这里需要开启php的gd扩展 这边提供安装php5.6的yum方法扩展自选.# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fe ...

  2. Centos系统运行nodejs

    这里我们需要先搭建一下运行的环境,直接yum安装就可以了! [root@iZwz9f80ph5u8tlqp6pi9cZ ~]# yum -y install nodejs 这里我们的环境就搭好了!安装 ...

  3. Hive函数:LAG,LEAD,FIRST_VALUE,LAST_VALUE

    参考自大数据田地:http://lxw1234.com/archives/2015/04/190.htm 测试数据准备: create external table test_data ( cooki ...

  4. Menu-多级菜单

    #menu多级菜单 from tkinter import * master = Tk() def callback(): print('我被调用了--') menubar=Menu(master)# ...

  5. Ubuntu Sublime 配置

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 2018.4.14 Ubuntu Sublime 配置 承 Ubuntu Apach ...

  6. C# Hex编码和解码

    /// 从字符串转换到16进制表示的字符串 /// 编码,如"utf-8","gb2312" /// 是否每字符用逗号分隔 public static stri ...

  7. c#之文件操作(学习笔记)

    File类和Directory类 FileInfo类 需要提供一个文件路径来创建一个FileInfo类实例对象,FileInfo提供很多类似File的方法,在选择使用File还是FileInfo时应遵 ...

  8. [LeetCode] Find Bottom Left Tree Value 寻找最左下树结点的值

    Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input: 2 / \ 1 ...

  9. C++中 return,break,continue的用法

    引用:https://blog.csdn.net/smf0504/article/details/51315835 https://blog.csdn.net/ting_junhui/article/ ...

  10. C#利用微软企业库Enterprise Library配置mysql数据库

    在C#项目中,很多时候到要用到Enterprise Library.这里只是用一个很简单的小例子来演示一下Enterprise Library在VS2010中操作MySQL数据库的流程. 1,利用En ...