Redis数据库入门教程

概述

  1. redis是什么?
    Redis高性能,开源C语言开发的,以键值对存储数据的No Sql数据库
    • No sql :非关系型数据
    • 数据都是K-V形式
  1. 为啥需要学习redis?
    爬虫:数据存储
    • 文本:csv,excel,text,json
    • 数据:MongoDB
    • 分布式爬虫

Web:

    • 缓存
  1. redis特点?
    1. 支持数据持久化,可以将内存的数据保存到硬盘
    2. string list set zset hash数据结构的存储
    3. 支持数据备份
    4. 速度快
  1. 应用场景
    • 用来做缓存
    • 大型系统中,实现特定功能:session共享  购物车

安装

下载地址:https://github.com/redis-windows/redis-windows/releases

  1. 下载压缩包(尽量不要最新版)
  2. 解压指定盘符 例如 D:redis
  3. 配置环境变量path   (可选)
  4. 启动服务 redis-server
  5. 链接客户端  redis-cli

数据操作

  • redis是key-value数据结构 每条数据都是一个键值对
  • 键的类型是字符串
  • 注意:键不能重复
  • 值的类型:
    • 字符串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset

string

  • 字符串类型的value 最多可以容纳的数据长度512M
保存

设置键值

set key value

例如:设置key为name,value为mark的数据

set name mark

设置键值过期时间

setex key seconds value

设置key为aa ,value为1的 过期时间10秒

setex aa 10 1

设置多个键值对

mset key value [key value ...]

mset a1 1 a2 2 a3 3

追加值

append key value

append a4 4

获取
  • 获取:根据键获取值 如果不存在则返回nil

get key

  • 获取:根据多个键获取多个值

mget key1 key2 ......

查询
  • 查询键 参数支持正则表达式

keys pattern

  • 查询所有键

keys *

  • 判断键是否存在 如果存在返回1 不存在返回0

exists key

  • 查看键对应值的类型

type key

  • 查看有效时间 -1 没有时间限制 -2 没有这个key

ttl key

删除
  • 删除键以及对应值 返回1成功 0删除不成功

del key

  • 设置过期时间 已存在键值对

expire key seconds

其他命令
  • incr key:将key存储数字+1 (整数)
  • decr key:将key存储数字-1
  • incrby key increment:在key存储的值在加给定量
  • decrby key increment:在key存储的值在减给定量
  • getrange key start end :将键对应值 进行截取
  • setrange key oset value:在值oset位置覆盖数据

list

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

增加
  • 在左侧插入数据

lpush key value

  • 在右侧插入数据

rpush key value

  • 在指定元素的前或者后插入新的数据

linsert key BEFORE|AFTER pivot value

linsert a4 after 2 99    在2的后面插入99

PS:

(error) MISCONF Redis is congured to save RDB snapshots, but it is
currently not able to persist on disk. Commands that may modify the
data set are disabled, because this instance is congured to report
errors during writes if RDB snapshotting fails (stop-writes-on-bgsaveerror option). Please check the Redis logs for details about the RDB
error.
但它不能持久化到硬盘 用来修改数据的命令是不能用的

解决方法:

  • 运行config set stop-writes-on-bgsave-error no
  • 在redis.windows.conf文件 231 行 stop-writes-on-bgsave-error 由
    yes 改为no
获取
  • 返回列表里指定范围内元素

lrange key start stop

修改
  • 修改指定index对应的值

lset key index value

删除
  • 删除指定元素

lrem key count value

    • count = 0 :移除所有
    • count > 0: 从头到尾删除
    • count < 0: 从尾到头删除

hash

  • hash用于存储对象 对象结构为属性,值
  • 值的类型为string
增加,修改
  • 设置单个属性

hset key field value

hset user name mark

  • 设置多个属性

hmset key field value [field value ...]

获取
  • 获取指定键所有属性

hkeys key

hkeys user

  • 获取一个属性的值

hget key field

hget user name

  • 获取多个属性的值

hmget key field [field ...]

hmget user1 name age

  • 获取所有属性的值

hvals key

hvals user1

删除
  • 删除整个hash键和值  使用del
  • 删除属性 属性对应值会被一起删除

hdel key field [field ...]

hdel user1 class

set

  • 无序集合
  • 元素类型string类型
  • 元素不重复
增加
  • 添加元素

sadd key member [member ...]

sadd u1 zhangsan lisi wangwu zhangsan

获取
  • 返回所有元素

smembers key

smembers u1

删除
  • 删除del
  • 删除指定元素

srem key member [member ...]

srem u1 wangwu

  • 随机弹出出栈

spop key [count]

spop u2 2

查询
  • 判断集合元素是否存在 1表示存在  0表示不存在

sismember key member

sismember u2 1

移动

smove source destination member

smove u2 u1 1    #  把u2里1移动到u1里

zset

  • 有序集合
  • 元素为string类型
  • 元素不重复
  • 每个元素都会关联一个double类型的score ,表示权重 通过权重将元素从
    小到大排序
增加
  • 添加

zadd key [NX|XX][CH] [INCR] score member [score member

向u3对应的集合里添加元素    权重

zadd u3 4 lisi 5 wangwu 6 zhouliu 3 zhangsan

获取

  • 返回指定范围内的元素

zrange key start stop [WITHSCORES]

zrange u3 0 -1

  • 返回score 值在min-max之间的成员

zrangebyscore key min max

zrangebyscore u3 3 5

  • 返回某个成员的权重值

zscore key member

zscore u3 wangwu

删除

  • 删除指定元素

zrem key member [member ...]

zrem u3 zhangsan

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

zremrangebyscore key min max

zremrangebyscore u3 3 5

Python和redis交互

默认redis有16数据库

切换数据库

安装

pip install redis

代码

import redis

# 创建对象 与redis服务建立链接

sr = redis.StrictRedis()
# sr.set('u4','mark')
# sr.lpush('u5','1','2','3')


class StringRedis:

    def __init__(self):
        self.conn = redis.StrictRedis(host='127.0.0.1',port=6379,db=0,decode_responses=True)

    def string_set(self,k,v):
        # 写
        res = self.conn.set(k,v)
        print(res)

    def string_get(self,k):
        # 读
        res = self.conn.get(k)
        print(res)


s = StringRedis()
# s.string_set('u6','马克')
s.string_get('u6')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值