【Redis使用】一年多来redis使用笔记md文档,第(2)篇:命令和数据库操作

Redis 是一个高性能的key-value数据库。本文会让你知道:什么是 nosql、Redis 的特点、如何修改常用Redis配置、写出Redis中string类型数据的增删改查操作命令、写出Redis中hash类型数据的增删改查相关命令、说出Redis中 list 保存的数据类型、使用StrictRedis对象对string类型数据进行增删改查、参考课件步骤搭建 Redis 集群

全套Redis笔记地址: 请移步这里


共 1 章,19 子模块


学习目标

  • 能够写出Redis中string类型数据的增删改查操作命令
  • 能够写出Redis中hash类型数据的增删改查相关命令

重要文档

  • Redis 参考命令
  • Redis 官方文档

数据结构

  • redis是key-value的数据结构,每条数据都是⼀个键值对
  • 键的类型是字符串
  • 注意:键不能重复

  • 值的类型分为五种:

    • 字符串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset

数据操作行为

  • 保存
  • 修改
  • 删除

点击中⽂官⽹查看命令⽂档http://redis.cn/commands.html

学习目标

  • 能够说出Redis中 list 保存的数据类型

list类型

  • 列表的元素类型为string
  • 按照插⼊顺序排序

增加

  • 在左侧插⼊数据

lpush key value1 value2 …

  • 例1:从键为a1的列表左侧加⼊数据a 、 b 、c

lpush a1 a b c

  • 在右侧插⼊数据

rpush key value1 value2 …

  • 例2:从键为a1的列表右侧加⼊数据0、1

rpush a1 0 1

  • 在指定元素的前或后插⼊新元素

linsert key before或after 现有元素 新元素

  • 例3:在键为a1的列表中元素b前加⼊3

linsert a1 before b 3

  • 返回列表⾥指定范围内的元素

    • startstop为元素的下标索引
    • 索引从左侧开始,第⼀个元素为0
    • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

lrange key start stop

  • 例4:键为a1的列表所有元素

lrange a1 0 -1

设置指定索引位置的元素值

  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素

lset key index value

  • 例5:修改键为a1的列表中下标为1的元素值为z

lset a 1 z

删除

  • 删除指定元素

    • 将列表中前count次出现的值为value的元素移除
    • count > 0: 从头往尾移除
    • count < 0: 从尾往头移除
    • count = 0: 移除所有

lrem key count value

  • 例6.1:向列表a2中加⼊元素a、b、a、b、a、b

lpush a2 a b a b a b

  • 例6.2:从a2列表右侧开始删除2个b

lrem a2 -2 b

  • 例6.3:查看列表a2的所有元素

lrange a2 0 -1

set类型

  • ⽆序集合
  • 元素为string类型
  • 元素具有唯⼀性,不重复
  • 说明:对于集合没有修改操作

增加

  • 添加元素

sadd key member1 member2 …

  • 例1:向键a3的集合中添加元素zhangsanlisiwangwu

sadd a3 zhangsan sili wangwu

  • 返回所有的元素

smembers key

  • 例2:键a3的集合中所有元素

smembers a3

删除

  • 删除指定元素

srem key

  • 例3:删除键a3的集合中元素wangwu

srem a3 wangwu

zset类型

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯⼀性,不重复
  • 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
  • 说明:没有修改操作

增加

  • 添加

zadd key score1 member1 score2 member2 …

  • 例1:向键a4的集合中添加元素lisiwangwuzhaoliuzhangsan,权重分别为4、5、6、3

zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

  • 返回指定范围内的元素
  • start、stop为元素的下标索引
  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

zrange key start stop

  • 例2:键a4的集合中所有元素

zrange a4 0 -1

  • 返回score值在minmax之间的成员

zrangebyscore key min max

  • 例3:键a4的集合中权限值在5和6之间的成员

zrangebyscore a4 5 6

  • 返回成员memberscore

zscore key member

  • 例4:键a4的集合中元素zhangsan的权重

zscore a4 zhangsan

删除

  • 删除指定元素

zrem key member1 member2 …

  • 例5:删除集合a4中元素zhangsan

zrem a4 zhangsan

  • 删除权重在指定范围的元素

zremrangebyscore key min max

  • 例6:删除集合a4中权限在5、6之间的元素

zremrangebyscore a4 5 6

安装包

安装Redis的有3种方式https://github.com/andymccurdy/redis-py

  • 第一种:进⼊虚拟环境,联⽹安装包redis

pip install redis

  • 第二种:进⼊虚拟环境,联⽹安装包redis

easy_install redis

  • 第三种:到中⽂官⽹-客户端下载redis包的源码,使⽤源码安装

一步步执行 wget https://github.com/andymccurdy/redis-py/archive/master.zip
unzip master.zip
cd redis-py-master
sudo python setup.py install

调⽤模块

  • 引⼊模块

from redis import StrictRedis

  • 这个模块中提供了StrictRedis对象,⽤于连接redis服务器,并按照不同类型提供 了不同⽅法,进⾏交互操作

StrictRedis对象⽅法

  • 通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0
sr = StrictRedis(host='localhost', port=6379, db=0)简写
sr=StrictRedis()
  • 根据不同的类型,拥有不同的实例⽅法可以调⽤,与前⾯学的redis命令对应,⽅法需要的参数与命令的参数⼀致

string

  • set
  • setex
  • mset
  • append
  • get
  • mget
  • key

keys

  • exists
  • type
  • delete
  • expire
  • getrange
  • ttl

hash

  • hset
  • hmset
  • hkeys
  • hget
  • hmget
  • hvals
  • hdel

list

  • lpush
  • rpush
  • linsert
  • lrange
  • lset
  • lrem

set

  • sadd
  • smembers
  • srem

zset

  • zadd
  • zrange
  • zrangebyscore
  • zscore
  • zrem
  • zremrangebyscore

学习目标

  • 能够使用StrictRedis对象对string类型数据进行增删改查

准备

  • 在桌面上创建redis目录
  • 使用pycharm打开 redis目录
  • 创建redis_string.py文件
from redis import *
if __name__=="__main__":try:#创建StrictRedis对象,与redis服务器建⽴连接sr=StrictRedis()except Exception as e:print(e)

string-增加

  • ⽅法set,添加键、值,如果添加成功则返回True,如果添加失败则返回False
  • 编写代码如下
from redis import *
if __name__=="__main__":try:#创建StrictRedis对象,与redis服务器建⽴连接sr=StrictRedis()#添加键name,值为itheimaresult=sr.set('name','itheima')#输出响应结果,如果添加成功则返回True,否则返回Falseprint(result)except Exception as e:print(e)

string-

  • ⽅法get,添加键对应的值,如果键存在则返回对应的值,如果键不存在则返回None
  • 编写代码如下
from redis import *
if __name__=="__main__":try:#创建StrictRedis对象,与redis服务器建⽴连接sr=StrictRedis()#键name的值result = sr.get('name')#输出键的值,如果键不存在则返回Noneprint(result)except Exception as e:print(e)

string-修改

  • ⽅法set,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
  • 编写代码如下
from redis import *
if __name__=="__main__":try:#创建StrictRedis对象,与redis服务器建⽴连接sr=StrictRedis()#设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加result = sr.set('name','itcast')#输出响应结果,如果操作成功则返回True,否则返回Falseprint(result)except Exception as e:print(e)

string-删除

  • ⽅法delete,删除键及对应的值,如果删除成功则返回受影响的键数,否则则返 回0
  • 编写代码如下
from redis import *
if __name__=="__main__":try:#创建StrictRedis对象,与redis服务器建⽴连接sr=StrictRedis()#设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加result = sr.delete('name')#输出响应结果,如果删除成功则返回受影响的键数,否则则返回0print(result)except Exception as e:print(e)

  • ⽅法keys,根据正则表达式键
  • 编写代码如下
from redis import *
if __name__=="__main__":try:#创建StrictRedis对象,与redis服务器建⽴连接sr=StrictRedis()#所有的键result=sr.keys()#输出响应结果,所有的键构成⼀个列表,如果没有键则返回空列表print(result)except Exception as e:print(e)

学习目标

  • 能够根据课件中的步骤搭建 Redis 的主从

主从概念

  • ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构
  • master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1
  • 通过主从配置可以实现读写分离

  • master和slave都是一个redis实例(redis服务)

主从配置

配置主

  • 查看当前主机的ip地址

ifconfig

  • 修改/etc/redis/redis.conf文件

sudo vi redis.conf
bind 192.168.26.128

  • 重启redis服务

sudo service redis stop
sudo redis-server redis.conf

配置从

  • 复制/etc/redis/redis.conf文件

sudo cp redis.conf ./slave.conf

  • 修改redis/slave.conf文件

sudo vi slave.conf

  • 编辑内容

bind 192.168.26.128
slaveof 192.168.26.128 6379
port 6378

  • redis服务

sudo redis-server slave.conf

  • 查看主从关系

redis-cli -h 192.168.26.128 info Replication

数据操作

  • 在master和slave分别执⾏info命令,查看输出信息 进入主客户端

redis-cli -h 192.168.26.128 -p 6379

  • 进入从的客户端

redis-cli -h 192.168.26.128 -p 6378

  • 在master上写数据

set aa aa

  • 在slave上读数据

get aa

为什么要有集群

  • 之前我们已经讲了主从的概念,一主可以多从,如果同时的访问量过大(1000w),主服务肯定就会挂掉,数据服务就挂掉了或者发生自然灾难
  • 大公司都会有很多的服务器(华东地区、华南地区、华中地区、华北地区、西北地区、西南地区、东北地区、台港澳地区机房)

集群的概念

  • 集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。

redis集群

  • 分类

    • 软件层面
    • 硬件层面
  • 软件层面:只有一台电脑,在这一台电脑上启动了多个redis服务。

  • 硬件层面:存在多台实体的电脑,每台电脑上都启动了一个redis或者多个redis服务。

搭建集群

  • 当前拥有两台主机172.16.179.130、172.16.179.131,这⾥的IP在使⽤时要改为实际值

参考阅读

  • redis集群搭建 http://www.cnblogs.com/wuxl360/p/5920330.html
  • [Python]搭建redis集群 http://blog.5ibc.net/p/51020.html

配置机器1

  • 在演示中,172.16.179.130为当前ubuntu机器的ip
  • 在172.16.179.130上进⼊Desktop⽬录,创建conf⽬录
  • 在conf⽬录下创建⽂件7000.conf,编辑内容如下
port 7000
bind 172.16.179.130
daemonize yes
pidfile 7000.pid
cluster-enabled yes
cluster-config-file 7000_node.conf
cluster-node-timeout 15000
appendonly yes
  • 在conf⽬录下创建⽂件7001.conf,编辑内容如下
port 7001
bind 172.16.179.130
daemonize yes
pidfile 7001.pid
cluster-enabled yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes
  • 在conf⽬录下创建⽂件7002.conf,编辑内容如下
port 7002
bind 172.16.179.130
daemonize yes
pidfile 7002.pid
cluster-enabled yes
cluster-config-file 7002_node.conf
cluster-node-timeout 15000
appendonly yes
  • 总结:三个⽂件的配置区别在port、pidfile、cluster-config-file三项

  • 使⽤配置⽂件启动redis服务

redis-server 7000.conf
redis-server 7001.conf
redis-server 7002.conf
  • 查看进程如下图

配置机器2

  • 在演示中,172.16.179.131为当前ubuntu机器的ip
  • 在172.16.179.131上进⼊Desktop⽬录,创建conf⽬录
  • 在conf⽬录下创建⽂件7003.conf,编辑内容如下
port 7003
bind 172.16.179.131
daemonize yes
pidfile 7003.pid
cluster-enabled yes
cluster-config-file 7003_node.conf
cluster-node-timeout 15000
appendonly yes
  • 在conf⽬录下创建⽂件7004.conf,编辑内容如下
port 7004
bind 172.16.179.131
daemonize yes
pidfile 7004.pid
cluster-enabled yes
cluster-config-file 7004_node.conf
cluster-node-timeout 15000
appendonly yes
  • 在conf⽬录下创建⽂件7005.conf,编辑内容如下
port 7005
bind 172.16.179.131
daemonize yes
pidfile 7005.pid
cluster-enabled yes
cluster-config-file 7005_node.conf
cluster-node-timeout 15000
appendonly yes
  • 总结:三个⽂件的配置区别在port、pidfile、cluster-config-file三项

  • 使⽤配置⽂件启动redis服务

redis-server 7003.conf
redis-server 7004.conf
redis-server 7005.conf
  • 查看进程如下图

未完待续 下一期下一章

全套笔记直接地址: 请移步这里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3+Vite实现工程化,插值表达式和v-text以及v-html

1、插值表达式 插值表达式最基本的数据绑定形式是文本插值&#xff0c;它使用的是"Mustache"语法&#xff0c;即 双大括号{{}} 插值表达式是将数据 渲染 到元素的指定位置的手段之一插值表达式 不绝对依赖标签&#xff0c;其位置相对自由插值表达式中支持javascript的…

[uni-app] uni.showToast 一闪而过问题/设定时间无效/1秒即逝

toast一闪就消失 1.猜测频繁点击导致 – 排除 2.猜测再定时器内导致-- 排除 3.和封装的接口调用一起导致 - 是改原因 深挖发现: axios封装中, 对loading/hindloading进行了配置, 看来是 showToast 与 loading等冲突导致的 wx.hideLoading(Object object) 解决办法 再封装的…

【计算机毕业设计】Node.js商城APP-97200,免费送源码,【开题选题+程序定制+论文书写+答辩ppt书写-原创定制程序】

Node.js商城APP的开发 摘 要 在传统的商业模式中&#xff0c;对于日常各类商品&#xff0c;人们习惯于到各种商家店铺购买。然而在快节奏的新时代中&#xff0c;人们不一定能为购买各类商品腾出时间&#xff0c;更不会耐心挑选自己想要的商品。所以设计一个商城APP&#xff0c…

Notpad-- ubuntu下载安装

Notpad-- ubuntu下载安装 下载 Gitee链接&#xff1a; https://gitee.com/cxasm/notepad– 安装 sudo apt install *.deb运行 /opt/apps/com.hmja.notepad/files/Notepad--出错 需要安装qt5 sudo apt-get install qt5-default

米诺地尔行业分析:预计2029年将达到14亿美元

米诺地尔市场规模庞大&#xff0c;不仅包括消费品市场和服务行业&#xff0c;还涵盖了创新科技领域。随着经济的发展和市场需求的不断增长&#xff0c;米诺地尔市场的规模将继续扩大&#xff0c;各行各业都将面临更多机遇和挑战。 随着社会经济发展和城市化进程的推进&#xff…

【JavaEE初阶】计算机是如何工作的

一、计算机发展史 计算的需求在⼈类的历史中是广泛存在的&#xff0c;发展大体经历了从⼀般计算⼯具到机械计算机到目前的电子计算机的发展历程。 人类对计算的需求&#xff0c;驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代&#xff0c;发展的潮流是…

竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

文章目录 1 简介2 传统机器视觉的手势检测2.1 轮廓检测法2.2 算法结果2.3 整体代码实现2.3.1 算法流程 3 深度学习方法做手势识别3.1 经典的卷积神经网络3.2 YOLO系列3.3 SSD3.4 实现步骤3.4.1 数据集3.4.2 图像预处理3.4.3 构建卷积神经网络结构3.4.4 实验训练过程及结果 3.5 …

【C++百宝箱】语法总结:引用 | 内联函数 | auto | 范围for循环

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C入门宝典 &#x1f525;本文主要探讨C的语法&#xff0c;并深入了解C如何针对C语言中存在的不合理之处进行优化改进。 目录&#xff1a; ⌛…

麒麟KYSEC使用方法02-开启及关闭exectl

原文链接&#xff1a;麒麟KYSEC使用方法02-开启及关闭exectl hello&#xff0c;大家好啊&#xff0c;今天给大家带来麒麟KYLINOS的kysec使用方法系列文章第二篇内容----使用命令开启及关闭exectl&#xff0c;可执行程序策略有三种模式&#xff0c;off/enforing/warning&#xf…

算法(圆的定义和相关术语)

无向图的度 图中每一个顶点的度定义为以该项点为一个端点的边的数目 #include <cstdio>const int MAXN 100;int degree[MAXN] { 0 };int main() {int n, m, u, v;scanf("%d%d", &n, &m);//在输出边度的时候就已经表示度的数目了&#xff0c;所以用一…

Flutter笔记:使用相机

Flutter笔记 使用相机 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/134493373 【简介】本文介绍在 Fl…

3D 纹理渲染如何帮助设计师有效、清晰地表达设计理念

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 定义 3D 渲染可视化及其用途 3D 可视化是一种艺术形式。这是一个机会。这是进步。借助 3D 纹理…

基于单片机电梯液晶显示防超重,防气体报警、防夹报警控制系统及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、液晶显示楼层。 3、防超重&#xff0c;防气体报警、防夹报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /lcd1602初始化设置*/ void init_1602() //lcd1602初始化设置 { write_co…

亚马逊出口电热毯日本PSE认证需要什么资料解析

电热毯出口日本需要办理PSE认证&#xff0c;电热毯&#xff0c;又名电褥&#xff0c;是一种接触式电暖器具。 PSE认证介绍是日本强制性认证&#xff0c;包含安全及EMI&#xff0c;用以证明电子电气等产品符合日期电气用品安全法或国际IEC标准的要求。日本电气用品安全法规定&am…

MyBatis框架——Mybatis操作数据库之简单的insert操作的实现

入门_MyBatis中文网https://mybatis.net.cn/getting-started.html一些配置文件的模板可以从mybatis的官网中找到。 一、MyBatis操作数据库步骤 1、读取MyBatis配置文件mybatis-config.xml。 mybatis-config.xml作为mybatis的全局配置文件&#xff0c;配置MyBatis的运行环境等…

【Java 进阶篇】JQuery 遍历 —— 无尽可能性的 `each` 之旅

在前端的征途中&#xff0c;操作元素是开发者不可避免的任务之一。而在 JQuery 中&#xff0c;each 方法则是处理这个任务的得力助手。本文将深入探讨 each 方法的奇妙之处&#xff0c;以及它与原生的 for...of 循环的关系&#xff0c;带你领略无尽可能性的遍历之旅。 起步&am…

2023APMCM亚太杯/小美赛数学建模竞赛优秀论文模板分享

一、模板介绍 二、注意事项 将论文划分小节时&#xff0c;应避免在小节中出现大段的文字叙述&#xff0c;这样的叙述会妨碍评委在浏览论文时掌握论文的要点。重要的句子&#xff0c;包括首次定义的概念&#xff0c;用黑体书写。 重要的数学公式应另起新行单独列出。建模所用的…

微信小程序会议OA-登录获取手机号流程登录-小程序导入微信小程序SDK(从微信小程序和会议OA登录获取手机号到登录小程序导入微信小程序SDK)

目录 获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties …

HarmonyOS从基础到实战-高性能华为在线答题元服务

最近看到美团、新浪、去哪儿多家互联网企业启动鸿蒙原生应用开发&#xff0c;这个HarmonyOS NEXT越来越引人关注。奈何当前不面向个人开发者开放&#xff0c;但是我们可以尝试下鸿蒙新的应用形态——元服务的开发。 元服务是基于HarmonyOS提供的一种面向未来的服务提供方式&…

如何在外部数据库中存储空间化表时使用Mapinfo_mapcatalog

开始创建地图目录表之前 您将使用EasyLoader在要使用的数据库中创建地图目录表。EasyLoader与MapInfo Pro一起安装。 &#xff08;工具“DBMS_Catalog”不再随MapInfo Professional 64位一起提供&#xff0c;因为它的功能可以在EasyLoader工具中找到。&#xff09; ​ 注&…