当前位置:首页 >> 技术栈专业化分层 >> 【Redis使用】一年多来redis使用笔记md文档,第(2)篇:命令和数据库操作,祥仔j8av

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

cpugpu芯片开发光刻机 技术栈专业化分层 1
文件名:【Redis使用】一年多来redis使用笔记md文档,第(2)篇:命令和数据库操作,祥仔j8av 【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

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

start、stop为元素的下标索引索引从左侧开始,第⼀个元素为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的集合中添加元素zhangsan、lisi、wangwu

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的集合中添加元素lisi、wangwu、zhaoliu、zhangsan,权重分别为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值在min和max之间的成员

zrangebyscore key min max

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

zrangebyscore a4 5 6

返回成员member的score值

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.zipunzip master.zipcd redis-py-mastersudo 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 setsetexmsetappendgetmgetkey keys existstypedeleteexpiregetrangettl hash hsethmsethkeyshgethmgethvalshdel list lpushrpushlinsertlrangelsetlrem set saddsmemberssrem zset zaddzrangezrangebyscorezscorezremzremrangebyscore 学习目标 能够使用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.confbind 192.168.26.128

重启redis服务

sudo service redis stopsudo 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.128slaveof 192.168.26.128 6379port 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 7000bind 172.16.179.130daemonize yespidfile 7000.pidcluster-enabled yescluster-config-file 7000_node.confcluster-node-timeout 15000appendonly yes 在conf⽬录下创建⽂件7001.conf,编辑内容如下 port 7001bind 172.16.179.130daemonize yespidfile 7001.pidcluster-enabled yescluster-config-file 7001_node.confcluster-node-timeout 15000appendonly yes 在conf⽬录下创建⽂件7002.conf,编辑内容如下 port 7002bind 172.16.179.130daemonize yespidfile 7002.pidcluster-enabled yescluster-config-file 7002_node.confcluster-node-timeout 15000appendonly yes

总结:三个⽂件的配置区别在port、pidfile、cluster-config-file三项

使⽤配置⽂件启动redis服务

redis-server 7000.confredis-server 7001.confredis-server 7002.conf 查看进程如下图 配置机器2 在演示中,172.16.179.131为当前ubuntu机器的ip在172.16.179.131上进⼊Desktop⽬录,创建conf⽬录在conf⽬录下创建⽂件7003.conf,编辑内容如下 port 7003bind 172.16.179.131daemonize yespidfile 7003.pidcluster-enabled yescluster-config-file 7003_node.confcluster-node-timeout 15000appendonly yes 在conf⽬录下创建⽂件7004.conf,编辑内容如下 port 7004bind 172.16.179.131daemonize yespidfile 7004.pidcluster-enabled yescluster-config-file 7004_node.confcluster-node-timeout 15000appendonly yes 在conf⽬录下创建⽂件7005.conf,编辑内容如下 port 7005bind 172.16.179.131daemonize yespidfile 7005.pidcluster-enabled yescluster-config-file 7005_node.confcluster-node-timeout 15000appendonly yes

总结:三个⽂件的配置区别在port、pidfile、cluster-config-file三项

使⽤配置⽂件启动redis服务

redis-server 7003.confredis-server 7004.confredis-server 7005.conf 查看进程如下图 未完待续 下一期下一章 全套笔记直接地址: 请移步这里
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接