Back End

Redis

PineappleCat · 9月29日 · 2021年 113次已读

一、介绍Redis

1.1 现存问题

在单体架构搭建集群之后,会因为Tomcat之间的JVM缓存中的数据无法同步,导致一些问题……

由于单体架构搭建集群后,传统的缓存方案(JVM缓存-Map)失效,暂时没有一个比较好的替换方式……

由于多个JVM的原因,传统的锁失效了……

MySQL对于一 些非结构化数据,没有太好的存储方案,MySQL本身会将数据存储到本地磁盘,读写性能一般…

1.2 NoSQL&Redis介绍

NoSQL(Not Only SQL),对非关系型数据库的一种泛指。

一般市面上,给NoSQL大致分为了4类:

  • key-value:Redis,Memcache……
  • 文档型:Elasticsearch,MongoDB,Solr……
  • 面向列:Hbase……
  • 图形化:Neo4j……

Java中用的比较多的Key-Value存储的Redis

  • Redis时完全脱离Tomcat之外的一个单独的中间件。
  • Redis基于内存存储数据的,查询速度特别快。
  • Redis还提供了高性能的读写能力,并且并发能力极强,读的速度是110000次/s,写的速度是81000次/s 。
  • Redis还提供了丰富的存储数据的格式,可以满足大多数的非结构化存储。
  • Redis还提供了实现锁的机制,甚至由第三方框架Redisson提供的分布式锁的实现方案。
  • Redis的出生就时因为作者任务MySQL性能一般,自己写了Redis。

二、安装Redis

docker-compose.yml

version: '3.1'
services:
  redis:
    image: daocloud.io/library/redis:5.0.9
    container_name: redis
    ports:
      - 6379:6379

连接Redis服务:

  • 官方提供的客户端:
    • 进入到redis的容器内部:docker exec -it redis bash
    • 采用配置好环境变量的redis-cli连接:redis-cli [-h 127.0.0.1 -p 6379]
  • 图形化界面:
    • Redis的软件,直接傻瓜式安装redis-desktop-manager连接Redis服务方式

三、Redis存储数据的结构

Redis提供了八种存储数据的结构,只需要掌握五种即可:

  • string:value正常存储一个字符串/byte[]
  • hash/map:value可以存储map集合
  • list:value可以存储一个列表(允许重复,存取有序,有下标)
  • set:value可以存储一个集合(不允许重复,存取无序,没有下标)
  • zset(sorted-set):value可以存储一个有序的集合(不允许重复,存取会根据score排序,有下标)
  • HyperLogLog:去重计数,空间复杂度极低,采用12kb,可以存储2^64数据。时间复杂度是O(n),虽然空间复杂度比较低,但是计算存在误差。
  • GEO:存储地理位置的,可以存储经纬度,并且计算两个经纬度之间的距离等等操作……
  • 位图bitmap:存储二级制,只存储0,1两个数据。

付费资源您未登录,请先

Click here to view the copyright notice of this site(点击此处查看本站版权声明)
0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!