数据库-redis

摘抄自:https://pycoder.blog.csdn.net/article/details/107168559

1、什么是Redis,优缺点?

  • Remote Dictionary.Server ,本质是一个Key-Value类型的内存数据库。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存;
  • 纯内存操作,redis性能出色,每秒可以处理超过10万次读写操作。
  • 支持多种数据结构,单个最大value限制是1GB。
  • 与memcached相比的优势
    • memcached所有值均是简单的字符串,Redis支持更为丰富的数据类型
    • Redis速度快
    • Redis可以持久化
  • 缺点:
    • 数据库容器容易收到物理内存限制,不能用作海量数据的高性能读写
  • 作用:
    • 用list来做FIFO双向链表,实现一个轻量级的高性能消息队列服务
    • Redis也可以对存入的k-v设置expire时间

2、redis支持哪几种数据类型

  • string
    • 一个字符串类型的值能存储最大容量是:512M
  • list
  • set
  • sorted set
  • hashes

3、为什么redis需要把所有数据放到内存中?

  • 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。快速、数据持久化。
  • 不将数据放到内存中,磁盘I/O速度严重影响Redis性能;

4、Redis集群方案

  • codis
  • 目前用的最多的集群方案,基本和
  • 在业务代码层实现,起几个毫无关联的Redis实例,在代码层对key进行hash计算,然后去对应的redis实例操作数据。
    • 这种方式对hash层代码要求比较高,考虑节点失效后的替代算法方案、数据震荡后的自动脚本规划、实例的监控等。

5、mysql里有2000w数据,Redis中只存20w数据,如何保证Redis中数据都是热点数据?

  Redis内存数据集大小上升到一定大小时,就会实施数据淘汰策略。

6、Redis适合场景

  • 会话缓存(session cache)
    • 优势是持久化,例子(商业平台magento)
  • 全页缓存(FPC)
    • 即使重启了redis实例,因为磁盘的持久化,用户也不会看到页面加载速度的下降。
  • 队列
    • redis能作为一个很好的消息队列平台来使用
    • 类似于python对list的push/pop操作
  • 排行榜/计数器
    • 在内存中对数字进行递增或递减的操作实现的非常好。
    • set和sorted set,
  • 发布/订阅
    • 聊天系统

7、Redis集群的主从复制模型

  为了使在部分节点失败或大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型。

  每个节点都会有N-1个复制品

8、redis集群的写操作丢失

9、Redis集群之间如何复制的?

  异步复制

10、redis集群最大节点个数是?

  16384个

11、Redis中管道(pipelining)的作用?

  一次请求/响应服务器能实现处理新的请求,即使旧的请求还未被响应,这样可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。

12、redis数据库选择

  有16个逻辑数据库(db0-db15),每个数据库项目是隔离的,默认使用db0

13、python中redis的使用:https://blog.csdn.net/csdnhxs/article/details/122450575

pip install redis #安装Redis
import redis
#链接一
redis_conn = redis.Redis(host='127.0.0.1',port = 6379,password='pss',db=0)

#连接二
# redis_pool = redis.ConnectionPool(host='127.0.0.1',port = 6379,password='pss',db=0)
# redis_conn = redis.Redis(connection_pool= redis_pool)

#String
#设置单个键值 ex过期时间s  px过期时间ms
redis_conn.set('name_2','zarten_2')
#获取单个值
v = redis_conn.get('name_1')
#设置多个键值
name_dict = {
    'name_4':'vaa4',
    'name_5':'nkknk5'
}
redis_conn.mset(name_dict)
#获取多个值
m = redis_conn.mget('name_4','name_2')

14、查询缓存、缓存访问、缓存数据库一致性  https://blog.csdn.net/weixin_58104242/article/details/124056860

15、linux下关于Redis操作命令

1\访问redis根目录  cd /uers/local/redis-
2\登录redis   redis-cli -h 127.0.0.1 -p 6739
3\查看所有key值  key*
4\删除制定索引值   del key
5\清空整个Redis服务器的数据  flushall
6\清空当前库中所有key  flushdb
7\查询key值
string : get key
hash : hgetall
lists: lrange ksy
sets : smembers
sorted sets : ZRANGEBYSCORE

 

posted @ 2022-04-28 14:56  可乐奶茶  阅读(49)  评论(0编辑  收藏  举报