Python编程数据库篇之非关系型数据库
数据库 分为 关系型数据库 和 非关系型数据库。
随着互联网和大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量。这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈,非关系型数据库应运而生。
NoSQL,全程为Not Only SQL,意为不仅仅是SQL,泛指非关系型数据库。NoSQL是基于键值对的,数据之间不需要经过SQL层的解析,数据没有耦合性,因此性能非常高。
非关系型数据库又可细分如下
- 键值存储数据库:代表有Redis、Voldemort、OracleBDB等
- 列存储数据库:代表有Cassandra、HBase、Riak等
- 文档型数据库:CouchDB、MongoDB等
- 图形数据库:Neo4J、InfoGrid、Infinite Graph等
本节中我们主要介绍 Redis 和 MongoDB 数据库存储操作。
Redis
Redis概述
Redis是什么?
Redis是一个开源的基于内存的高效的键值型非关系型数据库,也是一种缓存型数据库,它基于C语言开发,存取效率极高,而且支持多种存储数据结构,使用非常简单。Redis提供了诸如字符串、散列、列表、集合、带范围查询的有序集合、位图、超级日志、地理空间索引和流等数据结构。Redis内置复制、Lua脚本、LRU驱逐、事务和不同级别的磁盘持久化,并通过Redis Sentinel和Redis Cluster自动分区提供高可用性。
Redis特性
- 速度快
- 支持数据库的持久化
- 支持多种数据类型
Redis使用
官网地址:https://redis.io/
命令地址:http://doc.redisfans.com/
Redis的安装及启动
- 查看帮助命令:redis-server --help
- 启动服务:redis-server.exe
- 链接客户端:redis-cli.exe
Redis配置文件
/etc/redis/redis.conf
当redis作为守护进程运行的时候,它会写一个pid到/var/run/redis.pid文件里面。
daemonize no
监听端口号,默认为6379,如果你设为0,redis将不在socket上监听任何客户端链接。
port 6379
设置数据库的数目
databases 16
根据给定的时间间隔和写入次数将数据保存到磁盘
save 900 1 # 900秒内如果至少1个key的值变化,则保存
save 300 10 # 300秒内如果至少10个key的值变化,则保存
save 60 10000 # 60秒内如果至少10000个key的值变化,则保存
redis默认只允许本地连接,不允许其它机器连接
bind 127.0.0.1
更多配置文件:https://www.cnblogs.com/kreo/p/4423362.html
Redis数据库简单使用
DBSIZE 查看当前数据库的key数量
keys * 查看key的内容
FLUSHDB 清空当前数据库的key的数量
FLUSHALL 清空所有库的key(慎用)
exists key 判断key是否存在
Redis常用数据类型
redis-string
string是redis最基本数据类型,一个key对应一个value。string可以包含任何数据,最大不能超过512M。在命令行中启动redis服务后输入help @string可查看相应关键字。
set/get/del/append/strlen
set ------- 设置值 set name henry 其中name为key,henry为value
mset ------- 设置多个值 mset age 30 home wf
get ------- 获取值 get name 取值
mget ------- 获取多个值 mget age home
del ------- 删除值 del home
append ------- 追加值 append name 123 ---> henry123
strlen ------- 字符串长度
expire -------