Redis与Python交互
一、NoSQL简介
- NoSQL,全名为Not Only SQL,指的是非关系型的数据库
- 随着访问量的上升,网站的数据库性能出现了问题,于是nosql被设计出来
优点/缺点
优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
缺点:
- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
分类
类型 |
部分代表 |
特点 |
列存储 |
Hbase Cassandra Hypertable |
顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
文档存储 |
MongoDB CouchDB |
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 |
key-value存储 |
Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis |
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |
图存储 |
Neo4J FlockDB |
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
对象存储 |
db4o Versant |
通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 |
xml数据库 |
Berkeley DB XML BaseX |
高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。 |
二、redis安装
下载: 打开官网下载或者直接运行以下命令(选择你需要的版本)
sudo wget http://download.redis.io/releases/redis-3.2.6.tar.gz
解压:
tar zxvf redis-3.2.6.tar.gz
生成:进入到redis-3.2.6目录下,依次执行下面两条命令
sudo make
sudo make install
配置文件: 一般配置文件都放在/etc/目录下
sudo cp /usr/local/redis-3.2.6/redis.conf /etc/redis/
打开redis.conf
绑定地址:如果需要远程访问,可将此行注释
bind 127.0.0.1
端口,默认为6379
port 6379
是否以守护进程运行
- 如果以守护进程运行,则不会在命令行阻塞,类似于服务
- 如果以非守护进程运行,则当前终端被阻塞,无法使用
- 推荐改为yes,以守护进程运行
daemonize no|yes
数据文件
dbfilename dump.rdb
数据文件存储路径
dir
的默认值为
./
,表示当前目录;推荐改为
dir /var/lib/redis
注意:当在配置文件中修改数据文件存储路径,此路径应存在;
如果在下载目录下运行过redis-server,在使用指定配置文件启动前关闭redis-server服务;
使用指定配置文件启动
sudo redis-server /etc/redis/redis.conf
停止redis服务
sudo kill -9 redis的进程id
查看该进程:
ps -ef|grep redis
三、redis数据操作
redis是key-value的数据,所以每个数据都是一个键值对
键的类型是字符串
值的类型分为五种:
- 字符串string
- 哈希hash
- 列表list
- 集合set
- 有序集合zset
数据操作的全部命令,可以查看中文网站
四、Redis与Python交互
# encoding=utf8
import redis
# 连接
r = redis.StrictRedis(host="localhost", port=6379)
# 方法1:根据数据类型的不同,调用响应的方法
r.set("a1", "good")
ret = r.get("a1")
print ret
print type(ret)
# 方法2:pipline
# 缓冲多条命令,然后依次执行,减少C/S之间TCP数据包
pipe = r.pipeline()
pipe.set("a2","nice")
pipe.set("a3","fine")
pipe.set("a4","alright")
pipe.execute()