Spring中使用Redis

Redis

简介

Redis是一种特殊类型的数据库,它被称为key-value存储。实际上,key-value存储与哈希Map有很大的相似性。可以不大夸张的说,它们就是持久化的哈希Map。

安装Redis

我是用Docker来安装和使用数据库的,Docker用起来还是特别舒服的!

安装Docker

我下载的windows版的,官网下载https://docs.docker-cn.com
这里写图片描述
注意:要确保开启Hyper-V这个组件才能安装Docker,如果BIOS中没有开启虚拟功能也不行,一般默认是开启的。另外Windows10家庭版是没有Hyper-V这个组件的。(Docker和VMWare虚拟机是不能同时使用的,所以如要使用VMWare就要先关闭Hyper-V功能)
这里写图片描述
安装好后可在设置界面更改镜像地址,默认下载镜像时是从docker官网下载。:
这里写图片描述

Docker中安装Redis

打开PowerShell或者Dos命令行窗口,输入docker pull redis 命令来下载redis镜像,默认下载最新版本的redis镜像。(也可下载指定版本的redis镜像,例如docker pull redis:3.2)
因为我已经下载好了,图就不截了。

运行redis镜像

接着输入docker的命令来运行redis镜像。
-d表示在后台运行,不阻塞命令行界面,让我们可继续输入其它命令,是detach单词缩写。
-p 表示端口号,左边的6379表示win10系统的端口(自已换其它的也随便),右边的则表表容器中redis端口。
–name表示运行redis镜像的一个实例名称。
docker run -d -p 6379:6379 –name redis01 redis
再输入命令启动第二个redis容器,注意端口号和实例名不同了。
docker run -d -p 6380:6379 –name redis02 redis
这里写图片描述
输入docker ps命令查看正在运行的所有容器,如下图
这里写图片描述

RedisClient桌面工具来连接Docker中的redis

这里写图片描述
这里写图片描述
Redis默认是16个数据库,db0~db15.

Spring中使用Redis

导入jedis-2.6.2.jar、spring-data-redis-1.4.2.RELEASE.jar、commons-pool2-2.4.2.jar,注意版本!!!

连接到Redis

这里写图片描述
Redis官网给出的Java客户端有这么多,推荐使用jedis。
Redis连接工厂会生成到Redis数据库服务器的连接。Spring Data Redis为四种Redis客户端提供了连接工厂:

  • JedisConnectionFactory
  • JredisConnectionFactory
  • LettuceConnectionFactory
  • SrpConnectionFactory

具体选择哪个,自己看着来吧!我使用的是jedis,也就是JedisConnectionFactory。
RootConfig.java

    @Bean
    public RedisConnectionFactory redis()
    {
        return new JedisConnectionFactory();        
    }

默认构造器创建的连接工厂会向localhost的6379端口创建连接,并且没有密码。

使用RedisTemplate

Spring Data Redis提供了两个模板:

  • RedisTemplate
  • StringRedisTemplate

RedisTemplate可以极大地简化Redis数据访问,能够让我们持久化各种类型的key和value,并不局限于字节数组。当key和value通常是String类型之后,StringRedisTemplate扩展了RedisTemplate,只关注String类型。我使用的是RedisTemplate!

RootConfig.java

@Bean
    public RedisTemplate<String, String> redisTempl(RedisConnectionFactory redis)
    {
        RedisTemplate<String, String> redisTempl = new RedisTemplate<String, String>();
        redisTempl.setConnectionFactory(redis);
        return redisTempl;
    }

注入RedisTemplate

@Autowired
private RedisTemplate<String, String> redisTempl;

测试,控制台会输出tom

@RequestMapping("/redis")
public String redis()
{
    redisTempl.opsForValue().set("name","tom");
    System.out.println(redisTempl.opsForValue().get("name") ); 
    return null;    
}

这里写图片描述
这里写图片描述
这里我只测试了String类型,其它list或set类型自己测试吧。都差不多!!!

使用key和value的序列化器

当某个条目保存到Redis key-value存储的时候,key和value都会使用Redis的序列化器进行序列化。Spring Data Redis提供了多个这样的序列化器:

  • GenericToStringSerializer:使用Spring转换服务进行序列化;
  • JacksonJsonRedisSerializer:使用Jackson1,将对象序列化为JSON;
  • Jackson2JsonRedisSerializer:使用Jackson2,将对象序列化为JSON;
  • JdkSerializationRedisSerializer:使用Java序列化;
  • OxmSerializer:使用Spring O/X映射的编排器和解排器实现序列化,用于XML序列化;
  • StringRedisSerializer:序列化String类型的key和value;

这些序列化器都实现了RedisSerializer接口。RedisTemplate会使用JdkSerializationRedisSerializer,意味着key和value都会通过Java进行序列化。StringRedisTemplate默认使用StringRedisSerializer。

参考:https://blog.csdn.net/junshangshui/article/details/79417943

以上只是学习所做的笔记,如有错误请指正。谢谢啦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值