爬虫入门(七)——Redis

1. Redis介绍

1.1 Redis是什么
  • Redis是一个高性能的,开源的,C语言开发的,键值对存储数据的nosql数据库。
  • NoSQL:not only sql,泛指非关系型数据库:Redis/MongoDB/Hbase Hadoop
  • 关系型数据库:MySQL、oracle、SqlServer
1.2 Redis特性
  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供List,set等数据类型
  • Redis支持数据的备份
1.3 Redis的作用

Redis的主要作用:快速存取

1.4 Redis应用场景

点赞/秒杀/直播平台的在线好友列表/商品排行榜/单点登录

1.5 如何使用Redis

官网地址:https://redis.io/

2. Redis的下载和打开

2.1 Redis下载

Redis目前的版本是6.0.5,对于windows系统来说目前只能下载3.0.5版本,然而基础用法都是不变的,这里我们也不必太苛求版本。以下是已经下载的Redis的链接分享,从百度网盘中解压即可:

链接:https://pan.baidu.com/s/1zdYURr-mhhzCO3YGvzrICA
提取码:djh0

2.2 Redis在cmd中如何打开

首先win+R打开运行窗口,在cmd界面cd进入电脑中存放下载好的redis的路径,然后输入 redis-server.exe,显示这个界面则代表成功打开:
在这里插入图片描述

2.3 Redis的连接

另外打开一个cmd界面,依然cd进入redis的存放路径,然后输入redis-cli.exe,出现如下界面则表示成功连接:
在这里插入图片描述
在这个界面下就可以输入Redis命令了!

2.4 Redis数据库简单使用

DBSIZE 查看当前数据库的key数量
keys * 查看key的内容
FLUSHDB 清空当前数据库的key的数量
FLUSHALL 清空所有库的key(慎用)
exists key 判断key是否存在

3. Redis常用五大数据类型

3.1 redis-string

string是redis最基本的类型,一个key对应一个value
在这里插入图片描述
string可以包含任何数据,最大不能超过512M

1. set/get/del/append/strlen

set ---- 设置值
get ---- 获取值
mset ---- 设置多个值
mget ---- 获取多个值
append ---- 添加字段
del ---- 删除
strlen ---- 返回字符串长度

2. incr/decr/incrby/decrby

incr ---- 增加
decr ---- 减少
incrby ----- 制定增加多少
decrby ----- 制定减少多少

3. getrange/setrange

getrange ---- 获取指定区间范围内的值,类似between…and的关系
setrange ---- 代表从第几位开始替换,下脚本从零开始
从0 -1表示全部

3.2 redis-list(单值多value)

List(列表)
列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素列表的头部(左边)或者尾部(右边)
它的底层实际是个链表
在这里插入图片描述

1. lpush/rpush/lrange

lpush/rpush/lrange ---- 从左/从右/获取指定长度
lpush list01 1 2 3 4 5 倒序排列
rpush list02 1 2 3 4 5 正序排列
lrange list01 0 -1 获取list01 中的所有值

2. lpop/rpop

lpop/rpop ---- 移除最左/最右
lpop list01 删除元素5
rpop list01 删除元素1

3. lindex,按照索引下标获得元素(从上到下)

lrange list01 0 -1
lindex list01 1

4. llen,求列表长度

llen list01

5. lrem key

删N个value
lrem list01 2 1 在list01中删除2个1

6.ltrim key

ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim list01 0 2 截取list01 从0到2的数据在赋值给list01

7. rpoplpush list1 list2 将list1中最后一个压入list2中第一位

lrange list01 0 -1
lrange list02 0 -1
rpoplpush list1 list2

8. lset key index value

lset list01 0 x 将list02中第一位换成x

9. linsert key before/after

linsert list01b before x php 在x之前加字段php

3.3 redis-Hash

hash是一个键值对集合
hash是一个string类型的field和value的映射表,hash特别适合存储对象
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200710161755223.png
在这里插入图片描述

1. hset/hget/hmset/hmget/hgetall/hdel

设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11
hget user id
hmset customer id 11 name juran age 26
hmget customer id name age 只返回相应的值
hgetall customer 返回全部
hdel user id 删除id

2. hlen

求哈希长度
hlen customer

3. hexists key

hexists ---- 在key里面的某个值
存在返回1 ,不存在返回0

4. hkeys/hvals

hkeys students
hvals students

3.4 redis-set(不重复的)

Set(集合)
set是string类型的无序集合在这里插入图片描述

1. sadd/smembers/sismember

sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3 去掉重复添加
smembers set01 得到set01
sismember set01 1 如果存在返回1 不存在返回0

2.scard

scard ---- 获取集合里面的元素个数
scard set01

3.srem key value

srem ---- 删除集合中元素
srem set01 3
SMEMBERS set01 3已经被删除掉

4. srandmember key

srandmembe ---- 随机出几个数
sadd set02 1 2 3 4 5 6 7 8
srandmember set02 2

5. spop key

spop ---- 随机出栈
spop set01

6. smove key1 key2

sadd set03 x y z
smove set01 set03 2 将set01中的2 移动到set03中

7. 数学集合类

sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02 返回 4 5 在第一个set中不在第二个set中
交集
SINTER set01 set02 返回 1 2 3
并集
SUNION set01 set02 返回set01 set02 中的值 去掉重复

3.5 redis-Zset

Zset(有序集合)
在这里插入图片描述

1. zadd/zrange

zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1
带分数返回 withscores

2. zrangebyscore key start end

zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70
zrangebyscore zset01 60 (90 表示不包含90
zrangebyscore zset01 60 90 limit 1 2 从第一条开始截取2条

3. zrem key

zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1

4. zcard/zcount key score区间 /zrank key values

zcard 求zset01 总条数
zcount zset01 60 90 求60-90个数
zrank zset01 v2 返回1 返回对应下角标,从0开始

4. 更多命令

更多Redis命令:http://doc.redisfans.com/

5. Redis与python交互

5.1 redis的安装

在编译器或cmd中输入 pip install redis

5.2 redis在py文件中的简单示例

注意:在编译器中运行同时也需要在cmd中打开Redis(操作步骤见2.2),否则会报错

import redis

class StringRedis(object):
    def __init__(self):
        self.r=redis.StrictRedis(host='127.0.0.1',port=6379,decode_responses=True)  
        # host和port分别表示连接地址和端口号,这里设置同上即可。默认decode_responses=False是字节型字符,这里改为True表示输出为字符串类型 
        # self.r=redis.Redis()   
    # 设置值    
    def string_set(self,k,v):
        res=self.r.set(k,v)
        print(res)
    
    #获取值
    def string_get(self,k):
        res=self.r.get(k)
        return res
        
if __name__=='__main__':
    s=StringRedis()
    s.string_set('name','python')
    print(s.string_get('name'))
    print(type(s.string_get('name')))
    #输出结果:
    # True 出现True则代表成功连接
    # python
    # <class 'str'>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值