设为首页 加入收藏

TOP

redis基础知识(一)
2023-07-26 08:17:34 】 浏览:103
Tags:redis

Redis是什么?

Redis(Remote Dictionary Server)远程字典服务,是一个开源的使用ANSI C语言编写、支持网路、可基于内存也可持久化的日志型,key-value(NoSql---->non-relational)数据库

Redis的特点?

  • 性能极高,基于内存,读的速度是11万次/s,写的速度是81千次/s
  • 丰富的数据类型,支持string、hash、list、set、zset多种数据类型
  • 原子性,所有操作都是原子性的,支持事务
  • 丰富的特性,支持发布订阅、通知、过期策略等
  • 支持持久化,可以将内存中的数据保存在硬盘中,重启后再次加载
  • 支持分布式,理论上可以无限扩展
  • 单线程,没有线程并发问题

Redis的应用场景?

  • 缓存
  • 分布式锁
  • 分布式session
  • 消息队列

Redis的安装?

Linux安装

yum -y install gcc
cd  /usr/local
wget http://download.redis.io/releases/redis-3.2.5.tar.gz
tar -xvf redis-3.2.5.tar.gz
mv redis-3.2.5 redis
cd redis

修改配置文件

vi redis.conf

修改

#bind 127.0.0.1 去掉本机ip,让其他机器访问
protected mode no 关闭保护模式

使配置项生效

make

Windows安装

从redis.io官网下载压缩包,解压后就完成了安装

Redis的数据类型?

  • string
  • hash
  • list
  • set
  • zset

Redis的事务?

  • multi 启动事务
  • exec 提交事务
  • discard 放弃事务
  • watch 监视一个或多个键,如果有其他客户端修改键值,事务将失败

Redis开发

编程式缓存

1)导入redis依赖

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

2)添加配置文件

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=0
spring.redis.jedis.pool.max-active=100
spring.redis.jedis.pool.max-wait=100ms
spring.redis.jedis.pool.max-idle=100
spring.redis.jedis.pool.min-idle=10

3)配置类

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        // 配置序列化器
        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);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        // key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        // hash的key也采用String的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        // value序列化方式采用jackson
        template.setValueSerializer(jackson2JsonRedisSerializer);
        // hash的value序列化方式采用jackson序列化器
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

4)使用RedisTemplate

常用方法:

  • ValueOperations opsForValue() 获取String类型的操作对象
  • HashOperations opsForHash() 获取hash类型的操作对象

ValueOperations操作对象

  • set(key,value) 保存key-value
  • Object get(key) 读取value

使用缓存的步骤

  1. 先查询缓存,如果查到直接返回;如果查不到再查询数据库
  2. 查询数据库,如果查到,保存在缓存中,并且返回;如果查不到,返回null

声明式缓存

1)在配置类上添加注解

@EnableCaching

2)在redis的配置类中添加方法

@Configuration
public class RedisConfig {

    @Bean
    public RedisCacheConfiguration provideRedisCacheConfiguration(){
        //加载默认配置
        RedisCacheConfiguration conf = RedisCacheConfiguration.defaultCacheConfig();
        //返回Jackson序列化器
        return conf.serializeva luesWith(
                RedisSerializationContext.SerializationPair
                .fromSerializer(new GenericJackson2JsonRedisSerializer()));
    }
}

3)缓存相关注解

  • @CacheConfig 使用在Service类上,可以配置缓存名称,如:@CacheConfig(cacheNames="books")
  • @Cacheable使用在查询方法上,让方法优先查询缓存
  • @CachePut使用在更新和添
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇使用 fastjson 又又又翻车了,莫.. 下一篇Sa-Token 多账号认证:同时为系统..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目