前言

启动服务器

启动客户端

数据操作

(string,键命令,hash,list)

(set,zset,发布订阅,主从配置)

与python交互

前言

作为跟MongoDB同属NoSQL阵营的Redis,也具有类似的“直爽快”特性。它本身读取速度快,又提供丰富的数据结构,避免程序员重复造轮子。大名鼎鼎的分布式scrapy也是基于redis,所以赶紧了解一下呗!

启动服务器

建议指定配置文件的方式启动,我的配置文件所在路径: /etc/redis/redis-server.conf 就不知道你们的是不是啦

启动方式:redis-server /etc/redis/redis-server.conf

启动客户端进入命令行:redis-cli

退出客户端:exit

数据操作

redis是key-value的数据,key的类型是字符串,value类型可以是:string,hash,list,set,zset

string

最基本类型,最大存储512M数据,可存储任何数据:数字,图片,序列化对象等设置键值:set key value

也可以一次设置多个数据:mset key1 value1 key2 value2 key3 value3…

获取键值:get key;也可以一次获取多个键值:mget key1 key2 key3…

如果不存在,返回nil甚至还能追加键值:append key value

也可以获取键值长度(有点像C语法哇):strlen key

也可以在设置键值的时候设置过期时间:setex key seconds value

运算(键值要求为数值):incr key 键值+1;incrby key increment 键值指定+increment ;相对应的就有decr key 键值-1,decrby key increment 指定-increment

键命令

(不仅仅针对于string类型,其他value类型的key都适用)查找键:keys pattern(支持正则),所以查看全部键可以是keys *

查看键是否存在:exists key,存在返回1,不存在返回0

也可以一次查询多个键:exists key1 key2 …,返回值为总和

查看键的类型:type key

删除键:del key,成功返回1,失败或键不存在返回0;或者删除多个键:del key1 key2 …,返回值为总和,即便键不存在,亦不会报错

设置过期时间:expire key seconds;查看键的剩余存活时间:ttl key

expire操作后返回1表示设置成功,返回0表示设置失败或是键不存在,设置时间单位秒;ttl操作后返回剩余存货时间,如果返回-2表示键不存在,如果返回-1代表永久存在当然,也能清除过期时间:persist key

如果persit操作之后返回1表示操作成功;如果返回0,键不存在或键本身就是永久

hash

用于存储对象,对象格式为键值对hset key field value / hmset key field1 value1 field2 value2 …,如何理解"对象"呢?即:一个人,这就是一个对象,有名字,年龄,性别等

hget key field / hmget key field1 field2 …

获取指定key的所有字段和值: hgetall key

获取指定key的所有字段:hkeys key

获取指定key的所有值:hvals key

获取指定key的字段个数:hlen key

判断key的字段是否存在:hexists key field,存在返回1,不存在返回0

删除字段及对应值:hdel key field / hdel key field1 field2 …

删除key:del key

获取值的字符串长度:hstrlen key field 我查了使用文档,的确存在这个hstrlen命令,用Tab命令提示也能自动弹出来,但是——

list

列表的元素类型是string,按照插入顺序排序,可列表的头或尾添加元素从头/尾部插入:lpush/rpush key value,每次返回的值是列表中的元素个数

在一个元素的前/后插入元素:linsert key before/after pivot value,这里的支点(pivot)就是原列表中的元素,value则是需要新添加的元素

失败则返回-1移除并获得值:lpop/rpop key,这里可以用python的list类型的pop方法来理解

利用索引获取元素:lindex key index

获取key的长度(也就是列表中的元素个数):llen key

修改列表中的元素值:lset key index value,指定元素在列表中的索引(index),value是修改后的内容。==如果index值上并不存在元素,报索引错误==

返回指定范围的元素:lrange key startIndex stopIndex

超出索引范围不报错裁剪列表:ltrim key startIndex stopIndex

set

无序集合,元素类型string,元素具有唯一性,不重复添加元素:sadd key member;或者一次添加多个:sadd key member1 member2 …,如果添加的元素已存在,返回0

移除元素:srem key member / srem key member1 member2 …

获取所有元素:smembers key

获取集合元素个数:scard key

求多个集合的交集:sinter key1 key2 …

求集合与其他集合的差集:sdiff key1 key2 …

求多个集合的合集:sunion key1 kye2 …

判断元素是否在集合中:sismember key member,存在返回1,不存在返回0

zset

有序集合,唯一性,每个元素都会关联到一个double类型的score,表示权重,根据权重对元素排序,元素的score可以相同zadd key score member;zadd key socre1 member1 score2 member2 …

zrem key member/zrem key member1 member2 …

zrange key start stop

zcard key

统计score值在min与max的个数:zcount key min max

返回member的score值:zscore key member

发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。消息格式:

a. subscribe 频道名1 [频道名2 …] 订阅

b. unsubscribe 频道名1 [频道名2 …] 退订

c. message之后显示频道,再之后显示正文

d. publish 频道 消息 发布

发布消息

接受消息

主从配置

每个主都可以设置许多的从,每个从又可以设置许多的从;通过设置主从,搭建分布式,如scrapy-redis分布式爬虫对主机修改配置文件:bind 主机Ip

对从机修改配置文件:

bind 从机Ip

slaveof 主机Ip port

与python交互安装包redis,导入:import redis

连接redis:r = redis.StrictRedis(host="hostname", prot=6379)

使用方法1:根据数据类型,使用对应方法,如:r.set("name", "kaihui") / r.get("name")

使用方法2:

p = r.pipeline()

p.set(…)

p.get(…)

p.execute()

法2缓冲多条命令,然后一次性执行,减少服务器-客户端之间TCP数据库包,从而提高效率

之前在redis客户端操作的命令,都很好的封装到了连接数据库的对象里,可以直接使用,如:r.hset() r.sadd()…

python爬虫有要求会redis么_Python爬虫-Redis相关推荐

  1. python redis连接_Python连接Redis连接配置

    系统环境: OS:Oracle Linux Enterprise 5.6 redis:redis-2.6.8 python:Python-2.7.3 redis的python包版本:redis-2.7 ...

  2. python爬虫工程师认证证书报考条件_Python爬虫工程师要具备怎样的技能

    对于程序员来说基本上不存在重复性的工作,任何重复劳动都可以通过程序自动解决.下面千锋带你一起了解爬虫需要哪些相关的技能. 1.基本的编码基础(至少一门编程语言) 这个对于任何编程工作来说都是必须的.基 ...

  3. python爬虫requests源码链家_Python 爬虫 链家二手房(自行输入城市爬取)

    因同事想在沈阳买房,对比分析沈阳各区的房价,让我帮忙爬取一下链家网相关数据,然后打 算记下笔记 用于总结学到的东西&用到的东西. 一.爬虫需要会什么? 学习东西 首先你要知道它是干嘛的.爬虫 ...

  4. python redis订阅_python实现 redis订阅与发布

    订阅者可以订阅一个或多个频道,发布者向一个频道发送消息后,所有订阅这个频道的订阅者都将收到消息,而发布者也将收到一个数值,这个数值是收到消息的订阅者的数量.订阅者只能收到自它开始订阅后发布者所发布的消 ...

  5. python爬音乐评论生成词云图_python爬虫+词云图,爬取网易云音乐评论

    又到了清明时节,用python爬取了网易云音乐<清明雨上>的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况.看到 ...

  6. python爬虫搜特定内容的论文_Python 爬虫爬取指定博客的所有文章

    自上一篇文章 Z Story : Using Django with GAE Python 后台抓取多个网站的页面全文 后,大体的进度如下: 1.增加了Cron: 用来告诉程序每隔30分钟 让一个ta ...

  7. python 依据某几列累加求和_Python爬虫笔记:爬取单个页面

    前言 学习Python爬虫技术也是一件需要大量实践的事情,因为并不是所有的网站都对爬虫友好,更多的一种情况是网站为了限制爬虫不得不在最小化影响用户体验的前提下对网站访问做出一定的限制,最常见的就是一些 ...

  8. python爬虫运行正常最后报错_Python爬虫运行正常,最后却报错

    问题: Python爬虫运行正常,最后却报错 描述: 刚学Python,不明白,特来请教. 程序是爬取贴吧某个地址的图片,运行正常,图片也都下载下来了. 代码如下:import urllib.requ ...

  9. python爬虫cookie池 与ip绑定_Python爬虫防封ip的一些技巧

    在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了.在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒IP可能就被封了. 本文就如何解决这个问题总结出一些应对措 ...

最新文章

  1. 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器
  2. jq 创建与添加节点
  3. 删除docker-register的镜像 none无效镜像讲解
  4. Interview:算法岗位面试—2019秋招校园招聘—算法工程师【机器学习、深度学习(偏图像)】秋招感悟:初期阶段的傲娇→中期阶段的紧张→后期阶段的蜕变
  5. gpg keys for php 5.5,Fedora解决/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64问题
  6. python创建变量并赋值_python怎么给变量赋值
  7. c++运动学正反解 ros_ROS系统MoveIt玩转双臂机器人系列(六)–D-H逆运动学求解程序(C++)...
  8. 高盛的AI说,今年世界杯冠军是巴西
  9. PowerEdge r730xd 安装centos 6.7
  10. 单独使用ckfinder选择图片
  11. 连载四:PyCon2018|恶意域名检测实例(附源码)
  12. 截取usb数据包,控制usb设备----Relay设备
  13. 解读一淘网(etao)首页响应式兼容ie6~ie8实现方法
  14. 墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)
  15. Scala高阶函数操作示例详解
  16. 12个球用天平秤3次求坏球
  17. 驱动加载错误:insmod: error inserting 'hello.ko': -1 Device or resource busy
  18. 计算机cap怎么学,6大学计算机大学计算机CAP.pdf
  19. 【阅读】当我遇见一个人
  20. html加js动态效果图,JS动态图片的实现方法完整示例

热门文章

  1. matlab 中diag函数的用法
  2. 基于物联网图像识别的SF6环网柜气压监测系统
  3. 1108 String复读机
  4. brew install 和 brew cask install 的区别
  5. 03 KEY BUZZ
  6. SurfaceGo_BMR_41_1.011.2.zip恢复镜像网盘满速下载地址
  7. 计算机的外围设备简介
  8. Type-C接口原理图,附引脚说明
  9. 【转】全国各地做生意十年的心得,忍不住上来感慨一下,诚信才是根基!
  10. 一个例子彻底弄懂python中的break和continue语句(Python经典编程案例)