NoSQL:快速上手学Redis数据库

作者:小新python入门到放弃 Python爱好者社区专栏作者

原文:https://mp.weixin.qq.com/s/FsRyx6vmDU2nhMtMDsNIGQ

Redis简介

Redis是一种nosql数据库(非关系型数据库),存取数据的格式是像字典一样key->value的形式。

关系型数据库和非关系型数据库的区别

关系型数据库比较适用于关系复杂的数据查询,nosql反之。nosql数据库不支持事务,各有各的好处,想爬虫的数据储存就经常用到nosql。

Redis数据库的优势

1、性能高

2、数据类型丰富

3、原子性

4、其他还有很多特性

Redis数据库的安装

windows下安装

下载地址:http://download.redis.io/releases/redis-5.0.3.tar.gz

解压到你安装的文件夹,打开cmd,切换到redis的目录下,输入:redis-server.exe redis.server.conf,再打开一个cmd,切换到redis目录下,输入redis-cli.exe,即可进行存储数据,测试一下输入set test "hello word",再输入的时候会有提示,我们不管,你写你的就好了,取数据get test 输出hello word ,运行成功。

Redis中的数据库

在redis数据库中我们的数据库是用所以来的,切换数据库用select关键字。新进入一个数据库,都是空的。比如我想进入2数据库,select 2 ,以此来把数据分开。

数据结构

首先他是key,value的形式来存储数据,键是不能重复的。

值的类型:

字符串string

哈希 hash

列表 list

集合 set

有序集合 zset(把集合变得有序)

增删改查操作

string类型

保存数据

set key value

比如 set name zhangsan

取值

get name

修改

set name zhangsan111

也就是说key存在就是修改,不存在就是修改。

设置key的过期时间(也就是多少秒后该key就没有了)

setex key 过期时间 值

例如: setex q 5 q

5秒后过期

另一种方法

expir q 5

查看还有是多少秒过期

ttl key

设置多个键值

mset key1 value1 key2 value2 可以继续往下写

对某个key追加数据

append key value

一下获取多个值

mget key1 key2

查看所有键值

keys *

查看以a开头的键

keys a*

判断一个键是否存在

exists key

存在返回1,不存在返回0

查看某个键对应的值的类型

type key

删除键

del key1 key2

hash类型

存储对象可以用hash类型。

添加,修改

hset key 属性 值

比如一个user对象,里面含有name = zhangsan

hset user name zhangsan

一次插入多个属性

hmset user 属性1 值1 属性2 值2

查看

查看hash的属性

hkeys key

比如hkeys user

查看某个属性的值

hget key 属性

比如 hget user name

一次查看多个属性的值

hmget user name age

获取所有属性的值

hvals key

比如 hvals user

删除

删除一整个对象

del key

比如 del user

删除属性

hdel key 属性1 属性2

比如 hdel user name age

list类型

添加

lpush key 值1 值2 值3

比如 lpush list 1 2 3

截取列表

lrange key 索引1 索引2

比如 lrange list 0 1

显示前两个。

上面的是从左侧插入数据,也可以从右侧插入数据

rpush key 值1 值2 值3

给list在右侧添加两个数据

rpush list 4 5

在指定元素前或后插入数据

比如向list 3 前插入6

linsert list before 3 6

before表示前,after表示后,我们在list 3 后插入7

linsert list after 3 7

获取数据

lrange key 起始索引 结束索引

结束索引是包含在内的。

查看所有

lrange key 0 -1

设置指定位置的值

lset key index value

比如在索引为1的位置为a

lset list 1 a

删除

删除指定元素

count >0:从左往右移除

count <0:从右往左移除

count = 0:移除所有

lrem key count value

比如移除list中a,只移除一次,从左往右移除:

lrem lsit 1 a

set类型

无序列表

元素为string类型

元素不能重复

没有修改操作

添加元素

sadd key 元素1 元素2

获取元素

smembers key

删除

srem key 元素

zset

和set一样,但是是有序的。

为什么变得有序,是因为我们要自己添加一个权重,根据权重从小到大排序

添加

zadd key 权重1 元素1 权重2 元素2

注意:权重就是一个数字。

获取

查看指定位置

zrange key 起始索引 结束索引

查看所有

zrange key 0 -1

查看权重在0到10之间的

zrangebyscore key 0 10

查看一个元素的权重值

zscore key 元素

删除

删除指定元素

zrem key 元素1 元素2

删除权重值在0到10之间的

zremrangebyscore key 0 10

redis和python的交互

安装包 pip install redis

# 导入模块

from redis import StrictRedis

# 创建一份StrictRedis对象

sr =StrictRedis(hsot='localhost',port = 6378,db=0)

# 可以简写成

sr1 = StrictRedis()

# 此时我们的sr1对象就有了上面的方法

比如添加一个key为classname,value为Redis一班。

sr1.set('classname','Redis一班')

# 返回的是一个bool值。

# 获取值

ret = sr1.get('classname')

print(ret)

# 改变值

upret = sr1.set('classname','Redis二班')

print(upret)

# 删除

sr1.delete("classname")

# 返回1表示一个,0表示一个都没有删除

# 也可以删除多个

sr1.delete("xxx","xxxxxx")

# 返回数字,如果为2表示都删除了

# 获取所有的键

sr1.keys()

# 其他操作都大同小异

Django使用Redis的作用

在Django框架中经常使用redid来保存我们的session值。

如何配置用我们的redis数据库来储存我们的session?

首先在虚拟环境中安装包:pip install django-redis-session==0.5.6

需要在settings.py中配置:

你使用的主要数据库还是mysql数据库,只是单独的session保存在sredis数据库中。

添加一下配置:

# 设置redis储存session

SESSION_ENGINE = 'redis_session.session'

# ip地址

SESSION_REDIS_HOST = 'localhost'

# 端口号

SESSION_REDIS_PORT = 6379

# 那个数据库

SESSION_REDIS_DB = 2

# 密码,我们没有设置密码

SESSION_REDIS_PASSWORD = ''

# session的标识码

SESSION_REDIS_PREFIX='session'

在Django中读取和设置session都还是一样的,没有区别

相关推荐