一、介绍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(点击此处查看本站版权声明)
必须 注册 为本站用户, 登录 后才可以发表评论!