如何利用个人电脑搭建网站作为服务器?
摘要:网站开发实验的总结,自己的电脑做网站当服务器使用,企业网站设计制作,网站开发维护费计入什么科目一、Redis定义 Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成&#xff0
网站开发实验的总结,自己的电脑做网站当服务器使用,企业网站设计制作,网站开发维护费计入什么科目一、Redis定义
Redis 是一种基于内存的数据库#xff0c;对数据的读写操作都是在内存中完成#xff0c;读写速度非常快#xff0c;被广泛应用于缓存方向。并且#xff0c;Redis 存储的是 KV 键值对数据。
二、Redis为什么不存在并发竞争
对数据类型的操作都是原子性的对数据的读写操作都是在内存中完成读写速度非常快被广泛应用于缓存方向。并且Redis 存储的是 KV 键值对数据。
二、Redis为什么不存在并发竞争
对数据类型的操作都是原子性的因为执行命令由单线程负责的不存在并发竞争的问题。
三、Redis 和 Memcached 有什么区别
共同点
1、都是基于内存的数据库一般都用来当做缓存使用。 2、都有过期策略。 3、两者的性能都非常高。
区别
1、Redis 支持的数据类型更丰富String、Hash、List、Set、ZSet而 Memcached 只支持最简单的 key-value 数据类型
2、Redis 支持数据的持久化可以将内存中的数据保持在磁盘中重启的时候可以再次加载进行使用而 Memcached 没有持久化功能数据全部存在内存之中Memcached 重启或者挂掉后数据就没了
3、Redis 目前是原生支持 cluster 模式的Memcached 没有原生的集群模式需要依靠客户端来实现往集群中分片写入数据。Memcached 是多线程非阻塞 IO 复用的网络模型Redis 使用单线程的多路 IO 复用模型。Redis 6.0 针对网络数据的读写引入了多线程
5、Redis 支持发布订阅模型、Lua 脚本、事务等功能而 Memcached 不支持。并且Redis 支持更多的编程语言。
6、Redis 同时使用了惰性删除与定期删除Memcached 过期数据的删除策略只用了惰性删除。
四、为什么用 Redis 作为 MySQL 的缓存
主要是因为 Redis 具备「高性能」和「高并发」两种特性。
1、Redis 具备高性能
假如用户第一次访问 MySQL 中的某些数据。这个过程会比较慢因为是从硬盘上读取的。将该用户访问的数据缓存在 Redis 中这样下一次再访问这些数据的时候就可以直接从缓存中获取了操作 Redis 缓存就是直接操作内存所以速度相当快。
如果 MySQL 中的对应数据改变的之后同步改变 Redis 缓存中相应的数据即可不过这里会有 Redis 和 MySQL 双写一致性的问题后面我们会提到。
2、 Redis 具备高并发
单台设备的 Redis 的 QPSQuery Per Second每秒钟处理完请求的次数 是 MySQL 的 10 倍Redis 单机的 QPS 能轻松破 10w而 MySQL 单机的 QPS 很难破 1w。
所以直接访问 Redis 能够承受的请求是远远大于直接访问 MySQL 的所以我们可以考虑把数据库中的部分数据转移到缓存中去这样用户的一部分请求会直接到缓存这里而不用经过数据库。
五、Redis数据类型
Redis 提供了丰富的数据类型常见的有五种数据类型String字符串Hash哈希List列表Set集合、Zset有序集合。
随着 Redis 版本的更新后面又支持了四种数据类型 BitMap2.2 版新增、HyperLogLog2.8 版新增、GEO3.2 版新增、Stream5.0 版新增。 Redis 五种数据类型的应用场景
String 类型的应用场景缓存对象、常规计数、分布式锁、共享 session 信息等。 List 类型的应用场景消息队列但是有两个问题1. 生产者需要自行实现全局唯一 ID2. 不能以消费组形式消费数据等。 Hash 类型缓存对象、购物车等。 Set 类型聚合计算并集、交集、差集场景比如点赞、共同关注、抽奖活动等。 Zset 类型排序场景比如排行榜、电话和姓名排序等。 Redis 后续版本又支持四种数据类型它们的应用场景如下
BitMap2.2 版新增二值状态统计的场景比如签到、判断用户登陆状态、连续签到用户总数等 HyperLogLog2.8 版新增海量数据基数统计的场景比如百万级网页 UV 计数等 GEO3.2 版新增存储地理位置信息的场景比如滴滴叫车 Stream5.0 版新增消息队列相比于基于 List 类型实现的消息队列有这两个特有的特性自动生成全局唯一消息ID支持以消费组形式消费数据。
1、String数据类型
Redis自己构建了一种 简单动态字符串Simple Dynamic StringSDS。
