Redis学习笔记:命令
本文更新于2021-01-31,使用Redis 6.0.8,操作系统为Deepin 15.11。
目录字符串APPENDBITCOUNTBITOPDECRDECRBYGETGETBITGETRANGEINCRINCRBYINCRBYFLOATSETSETBITSETNXSETRANGE...[2021/2/1]
AOF写入和AOF重写对redis的阻塞以及解决方案
目录AOF写入策略AOF重写阻塞解决阻塞
AOF写入策略
由appendfsync参数控制:
可配置的值
说明
always
命令写入buf后调用系统调用fsync同步AOF文件,fsync完成后线程返回。
no
命令写入buf后调用系统调用write操作,后续fs...[2021/2/1]
操作系统swap对redis的性能的影响以及解决方案
目录一、操作系统SWAP二、Redis为什么会触发swap三、查看Redis swap情况四、解决Redis swap
一、操作系统SWAP
swap是操作系统的行为,是指当内存不足时,操作系统将内存的数据拿出一部分放入磁盘,数据从内存和磁盘换入换出的机制,涉及到磁盘的IO。一旦发生...[2021/2/1]
操作系统内存大页(THP)对redis性能的影响
目录THPTHP对redis的影响关闭THP
redis启动日志的warning:
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create lat...[2021/2/1]
Redis实战之商城购物车功能的实现代码
目标
利用Redis实现商城购物车功能。
功能
根据用户编号查询购物车列表,且各个商品需要跟在对应的店铺下;统计购物车中的商品总数;新增或删减购物车商品;增加或减少购物车中的商品数量。
分析
Hash数据类型:值为多组映射,相当于JAVA中的Map。适合存储对象数据类型。因...[2021/2/1]
同一份数据Redis为什么要存两次同一份数据Redis为什么要存两次
前言
在 Redis 中,有一种数据类型,当在存储的时候会同时采用两种数据结构来进行分别存储,那么 Redis 为什么要这么做呢?这么做会造成同一份数据占用两倍空间吗?
五种基本类型之集合对象
Redis 中的集合对象是一个包含字符串类型元素的无序集合,集合中元素唯一不可重复。
集合对...[2021/1/25]
Redis源码系列(一)
Redis源码系列——内存管理
函数原型 src/zmalloc.h
函数指针与void*指针的使用,提供了一个泛型的机制
/*stringfication*/
#define __xstr(s) __str(s)
#define __str(s) #s
/*prototypes*/...[2021/1/25]
深入理解Redis之简单动态字符串
目录SDSSDS与C字符串的区别SDS获取字符串长度复杂度为O(1),C字符串为O(N)SDS杜绝了缓存区溢出减少修改字符串时带来的内存重分配次数二进制安全
Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串...[2021/1/25]
Redis基础之事务Redis基础之事务
如果Redis需要执行一组命令,为了保持数据的一致性,连续性,需要用到事务(Transaction),本文以一些简单的小例子,简述Redis事务相关内容,仅供学习分享使用,如有不足之处,还请指正。
Redis事务涉及命令
DISCARD:取消事务,且DISCARD是与MULTI成对出现...[2021/1/25]
Redis-第五章节-8种数据类型 - Mr-Tsing
目录
一、Redis对key的操作
二、五种数据类型
String类型
List(集合)
Set(集合)
Hash(哈希)
Zset(有序集合)
三、三种特殊数据类型
geospatial(地理位置)
hyperloglog(优点:占用内存小)
Bitmap(位图)
一、R...[2021/1/25]
Redis-第二章节-简介 - Mr-Tsing
简介
概要:
起源:
2008年,意大利一家创业公司Merzia推出了一款基于mysql的网站统计系统LLOOGG,然而没过多久公司的创世人对mysql的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年完成。一直持续更新到现在的6.0.9版本。
N...[2021/1/18]
Redis基础之命令篇Redis基础之命令篇
温故而知新,本文主要以一些简单的小例子,简述Redis相关数据类型和对应的操作命令,仅供学习分享使用,如有不足之处,还请指正。
Redis数据类型
Redis支持的数据类型,主要有以下五种:
string(字符串):string类型是Redis最基本的数据类型,一个键最大能存储512...[2021/1/18]
Redis 设计与实现 10:五大数据类型之有序集合
有序集合 sorted set (下面我们叫zset 吧) 有两种编码方式:压缩列表 ziplist 和跳表 skiplist。
编码一:ziplist
zset 在 ziplist 中,成员(member)和分数(score)是挨在一起的,元素按照分数从小到大存储。
举个例子,我们...[2021/1/18]
Redis-第三章节-安装和配置 - Mr-Tsing
官网地址
https: redis.io/
下载
wget https: download.redis.io/release redis-6.0.10.tar.gz
安装
cd redis-6.0.10
make
...[2021/1/18]
Redis-第四章节-基础知识 - Mr-Tsing
基础知识
5种基本数据类型
String(字符串)
String是redis最基本的数据类型,一个key对应一个value。
String类型的值最大能存储512M。
Hash(哈希)
Hash相当于双重map。
每个Hash可以存储40多亿键值对。
List(列表)
redis...[2021/1/18]
Redis基础之配置文件
一般情况下,Redis配置文件中提供了很多默认的选项,可以不做任何修改而直接使用,本文主要简述配置文件中常用的配置选项,仅供学习分享使用,如有不足之处,还请指正。
Redis启动方式
Redis的启动时,必须有一个配置文件与之相匹配(如:/root/myredi redis.conf)...[2021/1/18]
redis-集群(1)
目录一、集群简介二、Redis Cluster数据分区原理2.1 Hash分区方案2.1.1节点取余分区2.1.2一致性哈希2.2 Redis Cluster数据分区方案三、搭建集群3.1 准备节点3.2 创建集群四、节点通信原理4.1 Go ip消息4.2 通信节点选择
一、集群简介...[2021/1/18]
使用docker搭建redis主从的方法步骤使用docker搭建redis主从的方法步骤
一、构建 Docker 环境
1、创建 dockerfile
FROM centos:latest
RUN groupadd -r redis && useradd -r -g redis redis
RUN yum -y update &...[2021/1/11]
Redis 设计与实现 9:五大数据类型之集合
集合对象的编码有两种:intset 和 hashtable
编码一:intset
intset 的结构
整数集合 intset 是集合底层的实现之一,从名字就可以看出,这是专门为整数提供的集合类型。
其结构定义如下,在 intset.h:
typedef struct intset...[2021/1/11]
redis-哨兵redis-哨兵
目录一、基本概念和架构1.1 基本概念1.2 架构二、部署演示2.1 部署主从节点2.2 部署哨兵节点2.3 故障转移演示三、客户端连接(配置提供者)3.1 代码3.2 原理四、实现原理4.1 三个定时任务4.2 主观下线和客观下线4.3 领导者Sentinel节点选举4.4 故障转移...[2021/1/11]
sessionState~RedisSessionStateProvider高可用的实现
早在几年前就有了se ionState进行共享se ion的方式,今天总结一下高可用redis实现的共享se ion的方式
sentinel集群搭建
工作过程图
配置
Redis数据服务配置
首先配置Redis的主从服务器,修改redis.conf文件如下
主服务配置
bi...[2021/1/4]
Redis集群搭建采坑总结
背景
先澄清一下,整个过程问题都不是我解决的,我在里面就是起了个打酱油的角色。因为实际上我负责这个项目,整个过程也比较清楚。之前也跟具体负责的同事说过,等过段时间带他做做项目复盘。结果一直忙,之前做的事情都快忘了也没带他做复盘。所以趁着还记得,总结一下这个问...[2021/1/4]
Redis安装与启动
概述
Redis【REmote DIctionary Server】作为当前比较流行的NoSql数据库,以其高性能,高可用的的特点,应用越来越广泛,深得各大企业和开发人员的青睐,本文主要简述Redis的下载,安装,启动,关闭的整个流程,仅供学习分享使用,如有不足之处,还请指正...[2021/1/4]
Redis 6.0 多线程性能测试结果及分析
单线程的Redis一向以简洁高效著称,但也有其阿喀琉斯之踵:阻塞!单个线程在最容易产生瓶颈的网络读写(Redis大key,也包括其他一些重量级的操作SORT/SUNION/ZUNIONSTORE,集中性的expired key清理,内存溢出的maxmemory-policy...[2020/12/28]
Redis 设计与实现 4:字典Redis 设计与实现 4:字典
Redis 中,字典是基础结构。Redis 数据库数据、过期时间、哈希类型都是把字典作为底层结构。
字典的结构
哈希表
哈希表的实现代码在:dict.h/dictht ,Redis 的字典用哈希表的方式实现。
typedef struct dictht {
哈希表数组,俗称的哈...[2020/12/28]
redis-复制
目录一、复制介绍二、复制配置2.1 建立复制2.1.1 命令2.1.2 演示2.2 断开复制3.2.1 直接断开3.2.2 切换到其他master三、拓扑结构四、复制过程五、数据同步原理5.1 psync命令需要的组件5.1.1 主从复制偏移量5.1.2 主节点复制积压缓冲区5.1.3 ...[2020/12/28]
PHP操作Redis常用命令
连接本地的 Redis 服务
$redis = new Redis();
$redis->connect(''127.0.0.1'', 6379);
$redis->auth(''123456'');
/*********************Key(键)*****...[2020/12/22]
redis-持久化(1)
目录一、RDB1.1 触发机制1.2 流程说明1.3 RDB优缺点二、AOF2.1 开启AOF2.2 AOF流程三、重启加载流程
持久化即备份,这是单机高可用的策略之一,有了备份,就可以在Redis故障通过备份进行恢复。redis持久化主要有RDB和AOF。
RDB
RD...[2020/12/21]
[Redis] 哈希表的Rehash机制
哈希表的完整结构 , 因为他是多个哈希一层层嵌套的 , 所以会是这样的结构
触发rehash的时机
字典类型容量变化过程叫做rehash,需要满足一定的条件才能触发扩容机制 服务器当前没有进行BGWRITEAOF或者BGSAVE命令...[2020/12/21]
[Redis] Redis的消息机制- 发布订阅
目前go-fly客服系统是通过内存来记录客服和访客的映射关系 , 不能用于分布式的环境下 , 只能单机使用 , 后续如果要支持分布式 , 可以考虑redis的pub ub机制
1.基于pub ub的特点,他的典型使用场景就是实时消息系统,比如即时聊天,群聊等功能
2.还常用作减轻高并...[2020/12/21]
[Redis] list底层的数据结构[Redis] list底层的数据结构
前面我们使用list实现过队列 , 现在就来看一下list的底层结构
list有两种实现方式:
1. 压缩链表
压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点(entry),每个节点可...[2020/12/14]
Redis服务方式启动脚本
Redis没有默认的服务脚本,方便管理的情况下需要自定义一个服务脚本,对于实例的启动好说,对于关闭Redis进程,有两种方式 1,直接杀进程,kill -9的方式,过于简单粗暴 2,基于redis-cli shutdown的方式,需要数据密码(如果脑子没问题都会启用密码认证) 网上的两...[2020/12/14]
Linux CentOS7下安装Redis
这篇文章是在Linux上安装redis,关于如何在window上安装redis可以参看 https: www.cnblogs.com/zxf100/p/14095893.html
1.下载Redis。进官网下载最新稳定版 https: redis.io/downlo...[2020/12/14]
Redis为什么这么快?
| 作者 吴显坚,腾讯云数据库高级工程师,参与过360开源项目Pika的研发工作,现从事redis数据库研发工作。
Redis服务器是一个事件驱动程序, 事件是Redis服务器的核心, 它处理两项重要的任务, 一个是IO事件(文件事件), 另外一个是时间事件. Redis服务器通过套...[2020/12/14]
Redis学习四(运维指南).
一、上线规划
一般 redis 的参数配置都在 redis.conf 中,在上线前根据实际环境配置好合适参数,能有效提高 redis 的可用性。
redis 的运行机器 CPU 不求核数多,但求主频高,Cache大,因为 redis 主处理模式是单进程的。
留意 r...[2020/12/14]
5分钟彻底理解Redis持久化5分钟彻底理解Redis持久化
Redis持久化
RDB快照
在默认情况下,Redis将内存数据库快照保存到dump.rdb的二进制文件中。
可以对Redis进行设置,让它在“N秒内数据集至少有N个改动”, 这一条件被满足时,自动保存一次数据集。比如说:让Redis满足“60秒内至少有1000个键被改动”这...[2020/12/14]
Redis数据结构
Redis开发
API及底层实现
全局命令
keys *:查看所有的键 O(n)
dbsize:键总数 O(1)
exists key :检查键是否存在
del key:删除键
expire key seconds:键过期
ttl : 返回键的剩余时间 (
>=0: 剩...[2020/12/8]
Windows下安装Redis
Redis下载地址:https: github.com/tporadowski/redi releases
1.下载redis,并解压
2.打开cmd命令行进入redis文件夹下,输入如下命令
redis-server.exe redis.windows.conf
&n...[2020/12/8]
关于缓存的一些重要概念(Redis 前置菜)
1. 缓存的基本思想
很多朋友,只知道缓存可以提高系统性能以及减少请求相应时间,但是,不太清楚缓存的本质思想是什么。
缓存的基本思想其实很简单,就是我们非常熟悉的空间换时间。不要把缓存想的太高大上,虽然,它的确对系统的性能提升的性价比非常高。
其实,我们在学习使用缓存的时候,你会发现...[2020/12/8]
Redis 常见问题总结
1. 简单介绍一下 Redis 呗!
简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。
另外,Redi...[2020/12/8]
redis安装与启动(Windows环境)
1、官方没有 Windows版本的 Redis,官网介绍:
Redis项目不正式支持Windows。但是,微软开发并维护了针对Win64的Windows版本。
2、Windows版本下载地址:https: github.com/MicrosoftArchive/r...[2020/12/8]
Linux安装redis和redis安装常见错误
Linux 源码安装
# wget http: download.redis.io/release redis-6.0.9.tar.gz
# tar xzf redis-6.0.9.tar.gz
# cd redis-6.0.9
# make
执行完 make 命令...[2020/12/8]
面试中经常问到的Redis七种数据类型,你都真正了解吗?
前言
Redis不是一个简单的键值对存储,它实际上是一个支持各种类型数据结构的存储。在传统的键值存储中,是将字符串键关联到字符串值,但是在Redis中,这些值不仅限于简单的字符串,还可以支持更复杂的数据结构。下面就是Redis支持的数据结构:
字符串(String):二进制安...[2020/12/8]
Redis必备面试题《基础篇》
Date:2019-11-12
读前思考:
面试官会问什么样的问题?
所问的问题背后真实的套路是什么?
喜欢问Redis哪些问题?
如何顺畅回答面试问的问题?吊打面试官。
1、什么是Redis?
&nb...[2019/11/13]
Redis中的键值过期操作
1.过期设置
Redis 中设置过期时间主要通过以下四种方式:
expire key seconds:设置 key 在 n 秒后过期;
pexpire key milliseconds:设置 key 在 n 毫秒后过期;
expireat key timestamp:设置 ...[2019/11/13]
SpringBoot下token短信验证登入登出权限操作(token存放redis,ali短信接口)SpringBoot下token短信验证登入登出权限操作(token存放redis,ali短信接口)
SpringBoot下token短信验证登入登出(token存放redis)
不对SpringBoot进行介绍,具体的可以参考官方文档
介绍:token基本使用,redis基本使用
思路:获取短信(验证并限制发送次数,将code存放redis)-->登入(验证并限制错误次...[2019/11/12]
Python 使用redis报:No module named redis问题Python 使用redis报:No module named redis问题
初次使用redis时,在链接Redis后,运行报错“No module named redis”。
具体代码如下:
import redis
r = redis.Redis(host=''192.168.2.22'',port=6379,db=2)
r.se...[2019/11/7]
python redis的连接及相关操作
1、redis连接、及存取值
import redis
r = redis.Redis(host=''192.168.2.22'',port=6379,db=2,pa word= ''redis'')
r.set(''name'',''Delia'') # 在redis里...[2019/11/7]
浅析python redis的连接及相关操作
redis简介
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。是一个非关系型数据库,经常会用作缓存,消息中间件的操作
redis优势
速度快,因为数据存在内存中
支持丰富数据类型,支持...[2019/11/7]
spring boot注解方式使用redis缓存操作示例
本文实例讲述了spring boot注解方式使用redis缓存操作。分享给大家供大家参考,具体如下:
引入依赖库
在pom中引入依赖库,如下
<dependency>
<groupId>org.springframework.boot</gro...[2019/11/6]