集群:同一个服务,复制多份
分布式:把不同的业务分不到不同的服务里面 Springcloud微服务
Redis
NoSql:
非关系型数据库
特点:非关系型,高并发
用途:做缓存,查询速度很快
Redis
redis是一个免费开源的,高性能,key-value的nosql.
特点
存在内存中,性能高;
支持持久化,安全;
支持集群,就可以支持高并发;
有很多语言的客户端;
支持的数据类型多
使用场景
缓存:以空间换时间:
什么数据适合做缓存:查询,很少修改的数据,可以作缓存;
实现思路:发起查询请求的时候,先从缓存中找:有就直接返回;没有就从数据库查,查出后放入缓存,并返回数据;
Redis服务端安装
绿色版本,直接减价
常用命令
String
set key value//将字符串值value关联到key
get key //返回key关联的字符串值
mset //同时设置一个或多个 key-value 对
mget //返回所有(一个或多个)给定 key 的值
Incr key //将 key 中储存的数字值增1(key不存在,则初始化为0,再加1)
decr key //将 key 中储存的数字值减1(key不存在,则初始化为0,再减1)
incrBy key //自增多少
decrBy key
Key
keys * //获取所有key列表
del key //删除key
del key1 key2 //删除多个
expire key xx //设置key的过期时间(xx秒后过期)
ttl key //查看key的过期时间
Redis:有16个库,从0--15,默认是0号库,库的选择:select 库号;不同库的数据不影响.
select 0-15 选择库
flushall //清空整个redis服务器数据,所有的数据库全部清空
flushdb //清除当前库,redis中默认有16个数据库,名称分别为0,1,2.。。15
List
redis怎么实现栈和队列?
都用list,控制一边进同一边出就是栈,一边进另一边出就是队列.
list集合可以看成是一个左右排列的队列(列表)
lpush key value //将一个或多个值 value 插入到列表 key 的表头(最左边)
rpush key value //将一个或多个值 value 插入到列表 key 的表尾(最右边)
lpop key //移除并返回列表 key 的头(最左边)元素。
rpop key //移除并返回列表 key 的尾(最右边)元素。
lrange key start stop //返回列表 key 中指定区间内的元素,查询所有的stop为-1即可
lrem key count value //根据count值移除列表key中与参数 value 相等的元素
Set
set集合是一个无序的不含重复值的队列
sadd key member //将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
srem key member //移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
smembers key //返回集合 key 中的所有成员。
Hash
hash类型类似于php的数组
hset key name value//添加一个name=>value键值对到key这个hash类型
hget key name //获取hash类型的name键对应的值
hmset key name1 key1 name2 key2 //批量添加name=>value键值对到key这个hash类型
hmget key name1 name2//批量获取hash类型的键对应的值
hkeys //返回哈希表 key 中的所有键
hvals //返回哈希表 key 中的所有值
hgetall //返回哈希表 key 中,所有的键和值
我们将user:1(name:zhangsan,age:18,sex:nv)的信息保存在hash表.
事务操作
multi //标记一个事务块的开始。
exec //执行所有事务块内的命令。
discard //取消事务,放弃执行事务块内的所有命令。
Redis的事务在执行exec指令时,才批量执行操作,没有回滚操作
消息的发布和订阅
SUBSCRIBE channel [channel ...] //订阅给定的一个或多个频道的信息。
PUBLISH channel message //将信息 message 发送到指定的频道 channel 。
Redis
Key
Exists 判断key是否存在
Set 获取key的值
Get 获取key的值
Keys 获取keys
Del 删除key的值
Expire 设置key的生存空间
Ttl 获取key的剩余生存空间
String
Set 添加修改
Get 获取
Append 追加
Del 删除
List操作
Lpush 设置列表值
Lrange 获取list值
Lrem 删除
Lset 修改
Sort 排序
数字,不用加sortingParams
字母需要加,并且是指assii值排序
Set操作
Sadd 添加成员
Srem 删除
Smember 查看所有成员
Simter 交集
Sinterstore 交集保存到新的set
Sunion 并集
Sinterstore 并集保存到新的set
Sdiff 差集
Sdiffstore 差集保存到新的set
Hash
Hset 设置或者修改
hgetAll 获取所有
Hdel 删除
hincrBy 查询所有的key
Hkeys 查询说要的value
Hvalues 查询说要的value
Jedis
数字,不用加sortingParams
字母需要加,并且是指assii值排序
Redis 持久化配置
RDB模式
持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启改模式
如何关闭 rdb 模式:
save ""
# save 900 1 //至少在900秒的时间段内至少有一次改变存储同步一次
# save xxx
# save 60 10000
AOF追加模式
AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
如何开启aof模式:
appendonly yes //yes 开启,no 关闭
# appendfsync always //每次有新命令时就执行一次fsync
#这里我们启用 everysec
appendfsync everysec //每秒 fsync 一次
# appendfsync no //从不fsync(交给操作系统来处理,可能很久才执行一次fsync)
其它的参数请大家看redis.conf配置文件详解
淘汰策略
volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
当redis存放的数据到达配置的最大内容后,会按照配置淘汰策略进行淘汰.