Redis那些事(一) — Redis简介
本人最近在学习Redis的使用和底层原理,有一些收获,所以希望通过写博客的形式来记录自己的学习过程,加深自己的理解,同时也方便以后查阅复习。目前打算先记录一些基本的使用方法和部分底层实现,其他的如果有用到我再贴上来。文章内容是我根据自己的理解和参考网上的资料总结的,如果有错误的地方,就麻烦各位大佬批评指正哈。
这是第一篇,我们就先来了解一下Redis的基础知识吧!
1. 什么是Redis ?
简单来说,Redis是一个基于C/S模式的Key-Value型的内存数据库,所有数据都存储在内存中,因此读写速度非常快,同时也支持数据持久化,可用于缓存、事件发布或订阅、高速队列等场景。Redis提供了多种高级语言的API ,如Java, C,C++,PHP等,可以非常方便地集成到其他大型模块中。另外,Redis提供了多种类型的数据结构给用户,如字符串,列表,哈希,集合,有序集合等,大大提高了Redis的可用性和性能。
2. 使用Redis有什么好处?
(1) 读写速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
(2) 支持丰富的数据类型,如 list, string, set, sorted set 等,方便用户使用,提高数据存储和数据读写的效率;
(3) 支持事务,即原子性操作,Redis中的事务(transaction)是一组命令的集合。事务同命令一样都是Redis最小的执行单位,一个事务中 的命令要么都执行,要么都不执行。
(4) 特性丰富,支持多种应用场景,可以使用RDB或者AOF进行持久化;
3. 相比memcached,Redis有哪些优势?
(1) memcached 只支持字符串类型的数据结构,而Redis支持多种高效方便的数据结构,方便使用;
(2) 一般来说,Redis的读写速度会比memcached快一些,性能更好;
(3) Redis 支持多种方式持久化,可以定期将内存中的数据写到磁盘,重启Redis 可以恢复原来的数据,而memcached不支持持久化,一旦系统掉电,数据就丢失了;
4. Redis的回收策略
Redis 支持多种回收策略(数据淘汰策略),用户可以根据需要进行相应的配置,主要的回收策略有以下几种:
(1) volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰;
(2) volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰;
(3) volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰;
(4) allkeys-lru:从所有数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰;
(5) allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰;
(6) no-enviction(驱逐):禁止驱逐数据
参考资料
1. redis总结:https://blog.csdn.net/hjm4702192/article/details/80518856
2. https://blog.csdn.net/qq_29108585/article/details/63251491
Redis那些事(一) — Redis简介的更多相关文章
- Redis API与常用数据类型简介
Redis API与常用数据类型简介 一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些 ...
- Redis安装和主要功能简介
Redis安装和主要功能简介 Redis(https://redis.io/), 是一个内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 安装Redis 我很少在开发机中直接装各种数 ...
- redis学习笔记之redis简介
redis简介 Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过设置各种键值数据类型来适应不同场景下的缓存与存储需求.同事redis的诸多高层级功能使其可以胜任消息队列,任务队列等不 ...
- Redis 安装,配置,简介,数据类型(一)
Redis 安装 Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你 ...
- Redis和Memcache和MongoDB简介及区别分析(整理)
Redis和Memcache 一.Redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年 ...
- Redis系列(一):Redis简介及环境安装
提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? R ...
- Redis 详解 (一) redis的简介和安装
目录 1.Redis 的简介 2.Redis 下载 3.安装环境 4.编译安装 5.启动Redis 6.关闭Redis 7.注意事项 工作中一直在用 Redis,但是一直没有进行系统的总结,这个系列的 ...
- [原]分享一下我和MongoDB与Redis那些事
缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...
- NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介
一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是Se ...
随机推荐
- C#SuperSocket的搭建--通过配置启动
之前我们借助一个SuperSocket实现了一个简易版的服务器, 但是不管是Server还是Session都是使用框架的,本篇博客我们要实现自己的Server和Session,来重写框架原生的Serv ...
- 洛谷 - P1198 - 最大数 - 线段树
https://www.luogu.org/problemnew/show/P1198 要问区间最大值,肯定是要用线段树的,不能用树状数组.(因为没有逆元?但是题目求的是最后一段,可以改成类似前缀和啊 ...
- Codeforces Round #408 (Div. 2) C.Bank Hacking(二分)
传送门 题意 给出n个银行,银行之间总共有n-1条边,定义i与j有边相连为neighboring,i到j,j到k有边,则定义i到k的关系为semi- neighboring, 每家银行hack的难度为 ...
- python多线程批量下载远程图片
python多线程使用场景:多线程采集, 以及性能测试等 . 数据库驱动类-简单封装下 mysqlDriver.py #!/usr/bin/python3 #-*- coding: utf-8 -*- ...
- vue父组件调用子组件方法
父组件: 代码 <sampleapplylinemodel ref="sampleapplylinemodel" @reLoad="_fetchRecords&qu ...
- Java笔记-序列化的注意点
1.使用serialVersionUID 在Eclipse中,如果一个类实现了Serializable接口,且没有给这个类设置一个serialVersionUID,就会有一个警告标志: The ser ...
- Hdu 5452 Minimum Cut (2015 ACM/ICPC Asia Regional Shenyang Online) dfs + LCA
题目链接: Hdu 5452 Minimum Cut 题目描述: 有一棵生成树,有n个点,给出m-n+1条边,截断一条生成树上的边后,再截断至少多少条边才能使图不连通, 问截断总边数? 解题思路: 因 ...
- queue POJ 2259 Team Queue
题目传送门 题意:先给出一些小组成员,然后开始排队.若前面的人中有相同小组的人的话,直接插队排在同小组的最后一个,否则只能排在最后面.现在有排队和出队的操作. 分析:这题关键是将队列按照组数分组,用另 ...
- 解题报告:hdu 3572 Task Schedule(当前弧优化Dinic算法)
Problem Description Our geometry princess XMM has stoped her study in computational geometry to conc ...
- MyBatsi-Mapper映射文件
Mapper映射文件 cache – 给定命名空间的缓存配置. cache-ref – 其他命名空间缓存配置的引用. resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加 ...