一 背景 我们现在的项目架构中,基本上是Web服务器(Tomcat)和数据库独立部署,独占服务器资源,随着用户数的增长,并发读写数据库,会加大数据库访问压力,导致性能的下降,严重时直接导致系统宕机。 我们可以在Tomcat同服务器上中增加本地缓存,并在外部增加分布式缓存,缓存热门数据。也就是通过缓存能把绝大多数请求在读写数据库前拦截掉,大大降低数据库压力 基于这样的一种架构设计,于是类似redis的一些分布式数据库就诞生了 2.Redis是一个key-value存储系统,是一个分布式缓存数据库。 二Redis初始操作 1.启动redis服务 docker start redis 2.docker 中查看redis 服务 docker ps 3.查看启动的redis进程信息 ps -ef | grep redis 4.进入redis容器 docker exec -it redis bash 5.登陆本地 redis redis -cli 6.查看redis信息 redis info 7.清空redis屏幕 clear 8.退出redis服务 exit 9关闭redis服务 shutdown 三 Redis数据存储操作 1.查看redis中的key keys * 2.基于key/value形式存储数据 set K V 3.基于key获取redis中存储的数据 get K 4.清除当前数据库数据 flushdb 5.清除所有数据库数据 flushall 6.Key有效时间设计 Expire (设置生效时长-单位秒) 7.Persist (取消时长设置) 三 redis常用的数据类型 1.Redis作为一种key/value结构的数据存储系统,为了便于对数据进行进行管理,提供了多种数据类型。 2.String类型 2.1 incr 自增,默认每次增加1/incrby 自增,可以设置增加的数目 2.2decr 自减,默认每次减1/decrby,自减,可以设置自减去的 2.3 append 追加,自动在末尾追加 2.4 strlen 字符串长度,返回数据的长度,如果键不存在则返回0。 2.5 mset/mget 同时可以设置多个值或者获取多个值 3. Hash类型 Redis散列类型相当于Java中的HashMap,实现原理跟HashMap一致,一般用于存储对象信息 3.1hset/hget 3.2hincrby 3.3 hmset/hmget 置和获取对象属性 3.4hexists 属性是否存在 3.5 hdel 删除属性 3.6hkey /hval 获取k值或者vlu值 4List 类型 Redis的list类型相当于java中的LinkedList,其原理就就是一个双向链表 4.1lpush 头部添加字符串元素 4.2rpush 尾部添加字符串元素 4.3 lpop 头部删除元素 4.4 rpop 尾部删除元素 注意Lpush 与rpop 搭配和rpush 与lpop搭配,是队列模式(先进先出) lpush 与lpop 和rpush 与rpop 搭配,是栈的模式(先进后出) 4.5 del 删除表 4.6 linsert 在key对应list的特定位置之前或之后添加字符串元素 4.7lset 设置list中指定下标的元素值(一般用于修改操作) 4.8 lrem 从key对应list中删除count个和value相同的元素,count>0时,按从头到尾的顺序删除 4.9ltrim 保留指定key 的值范围内的数据 5.0 llen 返回key对应list的长度: 5.1lindex 返回名称为key的list中index位置的元素 6 Set类型 6.1sadd 添加元素,重复元素添加失败,返回0 6.2smembers 获取内容 6.3spop 移除并返回集合中的一个随机元素 6.4 scard 获取成员个数 6.5smove 移动一个元素到另外一个集合 6.6 sunion 并集