Redis非关系型数据库

1.Redis概述

Redis:NoSQL数据库,使用内存作为介质,采用键值对(KV)保存数据。

  • 性能优越:读的速度为是十一万次每秒(官方),写的速度为八万一千次每秒(官方)
  • 应用场景:1.缓存热点或常用数据(热搜,热评)2.消息队列:(支付)3.高速读写(现场投票)
  • 注意事项:
1.业务数据如果命中率很低,没有必要写入Redis
2.业务数据频繁需要写入数据库,也没有必要写入Redis
3.业务数据数据量过大,会给Redis带来很大的压力,也没有必要使用Redis

2.如何安装与配置:

1.启动服务器 :redis-server redis.window.conf (redis.window.conf配置文件,requirepass 可以设置密码,最前面不能为空格)
2.启动客户端: redis-cli.exe
3.可以使用桌面管理工具:RedisDesktopManager


3.五种数据类型

  • String set key value get key value
  • Hash

1.hset key 字段 value
2.hmset key 字段1 value1 字段2 value2 字段n value n (存储多个)
3.hget key 字段
4.hmget key 字段1 字段2 字段3 字段n (获取多个字段值)
5.hgetall key (获取键的所有字段与value)

  • List(实质上是一个栈)

1.lpush key value1 value2 value3 valuen
2.lrange key 开始下标 结束下标 (根据下标位置遍历)

  • Set(不可重复,无序)

1.sadd key value1 value2 value3
2.smembers key (获取所有的键)

  • Zset(可排序,根据score)

1.zadd key score1 value1 score2 value2 score3 value3 scoren value3
2.zrange key 开始下标 结束下标 (根据下标遍历)
3.zrangebyscore key 开始下标 结束下标(根据分数区间遍历)


常用命令

  • 获取所有键:key *
  • 获取键总数:dbsize
  • 查询是否存在:exists key
  • 删除键:del key
  • 查询键类型:type key
  • 查询Key的声明周期:del key pttl key
  • 设置过期时间:expire key seconds pexpire key milliseconds
  • 设置永不过期:persist key (永不过期状态为-1)
  • 更改键名: rename key newKey

  • Redis为什么这么快?

1.采用内存作为存贮介质 2.kv键值对结构简单不会有太多的开销3.单线程,底层为C/C++

  • 缓存穿透

用户不断发起请求,缓存与数据库中都没有要查询的数据。例如ID为-1或者ID为非常大的数据。
解决:1.增加接口层校验,id进行校验,拦截
2.将要查询的数据的值设置为空,防止被同一个ID多次攻击

  • 缓存击穿

缓存有没有但数据库中有的数据(如:缓存时间到期),并发很高,都去数据库读取数据了,数据库压力瞬间增大。
解决方案:热点数据永不过期,定时的更新缓存数据

  • 缓存雪崩

缓存中的数据大批量的到期,而查询数量巨大,引起数据库压力过大甚至down。与缓存击穿不同的是,数据大量到期,击穿是一个数据过期,并发很高。
解决方案:1.热点数据永不过期2.数据过期时间随机,防止同一时间过期。3.缓存数据分布式部署,热点数据均匀分布在不同的缓存数据库中。

你可能感兴趣的:(Redis非关系型数据库)