Redis

打印 上一主题 下一主题

主题 209|帖子 209|积分 627

目次

概述
Linux 下使用 Docker 安装 redis
Redis数据结构
1.String(字符串)
单值缓存
计数器
2.哈希结构
3.列表
4.set 无序 不重复
5.zset 可以排序的不重复元素集合
设置失效时间
设置值时可以设置有用时间
设置值后设置有用时间
java连接redis
搭建:
spring-data-redis 针对 jedis 提供了如下功能:
注入 RedisTemplate
测试


概述

Redis是一个高性能的,键值对的,将数据存储在内存中的非关系型数据库(nosql数据库 not only sql)
高性能:数据存储在内存中,直接访问内存
键值对: 消息id(键):点赞数目(值)
                商品id(键):{id:1000,name:"华为手机",price:3000}
非关系型数据库:数据存储是键值对的,没有二维表关系,不使用sql操作
使用Redis作为缓存,将一些访问量大,大概修改较少的数据使用Redis存储起来,对mysql形成保护
Linux 下使用 Docker 安装 redis

创建 redis 设置文件和数据映射挂载卷
  1. mkdir -p /opt/redis/conf
  2. mkdir -p /opt/redis/data
复制代码
复制 redis.conf 文件到/opt/redis/conf 目次下(注意,此文件已设置密码为 123)
在此redis.conf 文件的 789行 将密码设置为123

允许远程连接访问

拉取镜像
  1. docker pull redis:6.0
复制代码
安装命令
  1. docker run -d -p 6379:6379 --name redis --restart=always --privileged=true \
  2. -v /opt/redis/conf/redis.conf:/etc/redis/redis.conf -v /opt/redis/data:/data \
  3. redis:6.0
复制代码
进入到容器
  1. docker exec -it redis bash
复制代码
进入到Redis
  1. redis-cli
复制代码
Redis数据结构

5种基本常用结构
string(字符串) hash(哈希) list(列表) set(集合 ) zset(sorted set:有序集合)
1.String(字符串)

string 是 redis 最基本的范例,一个 key 对应一个 value。
string 范例是二进制安全的。意思是 redis 的 string 可以包罗任何数据。比如 jpg 图片大概序列化的对象。
string 范例是 Redis 最基本的数据范例,string 范例的值最大能存储 512MB。
单值缓存

        set key value
        get key
        del key
        keys *
单值缓存值可以为 json 字符串
计数器

       set news_views 0 设置文章访问量
        incr news_views 文章访问量+1 (值加1)
        decr news_views 文章访问量-1 (值减1)
        get news_views 获得值
2.哈希结构

        适合一个键存储多个属性值的场景 例如用户信息 消息点赞,收藏信息

        hset key 属性名1 属性值1
        hset key 属性名2 属性值2
        hget key 属性名
        hdel key 属性名
        hlen key 返回属性值的数目
        hgetall key 返回全部的属性值
3.列表

        lpush key value
        rpush key value
        lpop key
        rpop key
lrange key 开始位置 竣事位置 查询列表指定区间的元素
4.set 无序 不重复

        sadd key vzaddalue1 value2
        srem key value
        smembers key 检察集合中全部元素
        scard key 检察集合中元素的个数
5.zset 可以排序的不重复元素集合

        zadd key 分数 值
        zrem key 值
        zscore key 返回值的分数
        zcard key 检察集合中元素的个数
设置失效时间

有时间我们并不盼望 redis 的 key 一直存在。例如缓存,验证码等数据,我们盼望它们能在一定时间内主动的被销毁。
redis 提供了一些命令,可以或许让我们对 key 设置过期时间,并且让 key 过期之后被主动删除
设置值时可以设置有用时间


        EX 表现以秒为单元
        PX 表现以毫秒为单元
        EX,PX 不区分大小写
        set name jim EX 30 设置失效时间为 30 秒
        ttl 键 检察剩余时间(秒)
        pttl 键 检察剩余时间(毫秒)
设置值后设置有用时间

        expire 键 时间(秒)
        pexpire 键 时间(毫秒
java连接redis

        redis官方提供了一个jedis的客户端,连接redis数据库 new jedis("ip","端口").set(key,value)
现在使用Spring中封装RedisTemplate类实现Java程序
搭建:

        1.添加redis依赖
  1. <dependency>
  2.         <groupId>org.springframework.boot</groupId>
  3.         <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>
复制代码
2.设置连接redis
  1. redis:
  2.   host: 192.168.247.128
  3.   port: 6379
  4.   password: 123
  5.   database: 0
  6.   pool:
  7.     max-active: 8 #连接池最大连接数(使用负值表示没有限制)
  8.     max-wait: -1ms #连接池最大阻塞等待时间(使用负值表示没有限制)
  9.     max-idle: 8 #连接池中的最大空闲连接
  10.     min-idle: 0 #连接池中的最小空闲连接
  11.     timeout: 5000ms #连接超时时间(毫秒)
复制代码
host:虚拟机IP或是云服务器的IP
spring-data-redis 针对 jedis 提供了如下功能:


  • 连接池主动管理,提供了一个高度封装的“RedisTemplate”类.
  • 针对 jedis 客户端中大量 api 进行了归类封装,将同一范例操作封装为 operation 接口.
    ValueOperations:简朴 K-V 操作 SetOperations:set 范例数据操作 ZSetOperations:zset 范例数据操作 HashOperations:针对 map 范例的数据操作 ListOperations:针对 list 范例的数据操作
  • 将事件操作封装,有容器控制。
  • 针对数据的“序列化/反序列化”,提供了多种可选择策略(RedisSerializer) JdkSerializationRedisSerializer:POJO 对象的存取场景,使用 JDK 本身 序列化机制.
    StringRedisSerializer:Key 大概 value 为字符串的场景,根据指定的 charset 对数据的字节序列编码成 string,是“new String(bytes, charset)”和 “string.getBytes(charset)”的直接封装。是最轻量级和高效的策略。
    JacksonJsonRedisSerializer:jackson-json 工具提供了 javabean 与 json 之 间的转换本事,可以将 pojo 实例序列化成 json 格式存储在 redis 中,也可以将 json 格式的数据转换成 pojo 实例。
注入 RedisTemplate

  1. @Autowired
  2. RedisTemplate redisTemplate;
复制代码
测试

  1. redisTemplate.opsForValue().set("name", "aa");
  2. redisTemplate.opsForValue().set("users", users,10*1000, TimeUnit.MILLISECONDS);
  3. redisTemplate.hasKey("name");
  4. redisTemplate.opsForValue().get("name");
  5. redisTemplate.delete("users");
复制代码
  1. 序列化键值
  2. redisTemplate.setKeySerializer(new StringRedisSerializer());
  3. redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<User>(User.class));
复制代码
   必要被 Redis 缓存的类,必须实现序列化接口  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

星球的眼睛

高级会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表