redis 介绍: redis 服务

redis (remote dictionary server) 是一个由salvatore sanfilippo 完成的key-value存储系统,是跨平台的非关系型数据库。

redis 是一个开源的使用ansi c语言编写、遵循bsd 协议的、支持网络、可基于内存、分布式、可选择持久性的键值对存储数据库,并提供多语言的api。

redis 通常被认为是数据结构服务器,其值可以是字符串、哈希、列表、集合以及有序集合。

redis 优点

异常快,每秒可以执行大约110000次写(set)操作

每秒可执行大约81000次读(get)操作

支持丰富的数据结构

操作具有原子性, 所有redis 操作都是原子操作,这确保了两个客户端并发访问,redis 服务器能接收更新的值。

多使用工具,缓存,消息队列(redis 本地支持发布/订阅),应用程序中的任何短期数据。

redis 安装

下载地址:

https://github.com/msopentech/redis/releases

redis 支持32位和64 位,下载完成后,解压后,文件夹下面包含许多子文件,打开cmd 窗口,将其切换到redis 目录下,输入命名:

d:\sdk\redis-x64-5.0.9  redis-server.exe  redis.windows.conf

redis是什么

redis是现在最受欢迎的nosql数据库之一,redis是一个使用ansi c编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性:

  • 基于内存运行,性能高效
  • 支持分布式,理论上可以无限扩展
  • key-value存储系统
  • 开源的使用ansi c语言编写、遵守bsd协议、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api

相比于其他数据库类型,redis具备的特点是:

  • c/s通讯模型
  • 单进程单线程模型
  • 丰富的数据类型
  • 操作具有原子性
  • 持久化
  • 高并发读写
  • 支持lua脚本

如果想使用redis 启动更加容易的话,可以使用 将redis 安装路径加入到环境变量中,直接点击 redis-server.exe 即可启动redis 服务。

springboot 集成redis 过程

1. 在pom.xml 中配置相关依赖 jar

<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-data-redis</artifactid>
</dependency>

2.在springboot 中配置核心文件

在application.properties 文件下添加配置redis 信息

# 配置redis
spring.redis.host:localhost
spring.redis.password=
spring.redis.port=6379

3. redis 配置类及其使用

redis 配置类

// redisconfig redisconfig 配置
@configuration
public class redisconfig {
    /**
     * key redis serializer: {@link stringredisserializer} and
     * key redis serializer: {@link jackson2jsonredisserializer}
     **/
    @bean
    public redistemplate<string, object> redistemplate(redisconnectionfactory factory) {
        // 创建对象
        redistemplate<string, object> template = new redistemplate<>();
        jackson2jsonredisserializer valueredisserializer = new jackson2jsonredisserializer(object.class);
        //设置redis的value为json格式,并存储对象信息的序列化类型
        objectmapper objectmapper = new objectmapper();
        objectmapper.setvisibility(propertyaccessor.all, jsonautodetect.visibility.any);
        objectmapper.enabledefaulttyping(objectmapper.defaulttyping.non_final);
        valueredisserializer.setobjectmapper(objectmapper);
​
        // 创建一个keyredisserializer
        redisserializer keyredisserializer = new stringredisserializer();
        // 设置信息
        template.setkeyserializer(keyredisserializer);
        template.setvalueserializer(valueredisserializer);
        template.sethashkeyserializer(keyredisserializer);
        template.sethashvalueserializer(valueredisserializer);
        template.setconnectionfactory(factory);
        template.afterpropertiesset();
        return template;
    }
​
    // redisutils()  方法
    @bean
    public redisutils redisutils(@autowired redistemplate redistemplate) {
        return new redisutils(redistemplate);
    }
}

redis 工具类, 首先redis 的增删改查等操作,针对多种数据类型的数据

/**
 * redis工具类
 *
 * @author jone
 */
// redisutils
@slf4j
public class redisutils {
​
    // 初始化变量
    private static logger logger = loggerfactory.getlogger(redisutils.class);
​
​
    private static redistemplate redistemplate;
​
    public redisutils(redistemplate redistemplate) {
        this.redistemplate = redistemplate;
    }
​
    // =============================common============================
​
​
    /**
     * 判断key是否存在
     *
     * @param key 键
     * @return true 存在 false不存在
     */
    public boolean haskey(string key) {
        try {
            return redistemplate.haskey(key);
        } catch (exception e) {
            logger.error("判断key是否存在异常: {}", e);
            return false;
        }
    }
​
    /**
     * 普通缓存获取
     *
     * @param key 键
     * @return 值
     */
    public object get(string key) {
        return key == null ? null : redistemplate.opsforvalue().get(key);
    }
​
    /**
     * 删除
     * @param key
     * @return
     */
    public boolean del(string ... key){
        if(key!=null&&key.length>0){
​
                redistemplate.delete(key[0]);
                return true;
            }else{
                redistemplate.delete(collectionutils.arraytolist(key));
                return true;
            }
        }
        return false;
    }
​
    // set jihe
    public set getkeys(){
       return redistemplate.keys("*");
    }
​
    /**
     * 普通缓存放入
     *
     * @param key   键
     * @param value 值
     * @return true成功 false失败
     */
    public boolean set(string key, object value) {
        try {
            redistemplate.opsforvalue().set(key, value);
            return true;
        } catch (exception e) {
            logger.error("set异常: {}", e);
            return false;
        }
    }
}

配置完备之后,自动配置redistemplate ,需要操作redis 的类中注入redisteplate,如下所示:

// 使用redistemplate                                                                                
@autowired
private redistemplate<string, string> redistemplate;
​
@autowired 
private redistemplate<object, object> redistemplate;

以上就是springboot 集成redis 过程的详细内容,更多关于springboot redis实战的资料请关注www.887551.com其它相关文章!