redis简介
简介: https://www.cnblogs.com/guotianbao/p/8683037.html
redis是主流的key-value nosql 数据库之一。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
注意:
redis是一个非关系型数据库。
数据库包括非关系型数据库和关系型数据库。
1、关系型数据库:mysql/oracle/sql server/db2/sqlite 数据是存在磁盘上的
2、非关系型数据库:
mongodb/redis 没有表结构,没有sql语句,没什么字段。速度比关系型数据库快,redis数据是存在内存上的,redis本身性能非常,每秒支持30万次读写。缺点是没有办法持久化(重启redis可以备份数据到磁盘里面,启动的时候再次读取磁盘的数据到内存,这种方法可以实现持久化)
数据库比较参考: https://blog.csdn.net/u014803081/article/details/88808903
redis做缓存
对比memcache参考: https://www.cnblogs.com/wudalang/p/5697470.html
当一个应用的数据量或者用户量上来后,如果每一次的查询都去访问数据库,或造成数据库效率变慢甚至崩溃。
而且在大多数应用中都是读多写少的,就可以将这些经常读的数据放到另外一个地方去(也就是缓存),让系统先从这个地方(缓存)获取,获取不到在查询数据库。这样可以大大的减少数据库的压力。经常与redis做比较的memcache,这里暂不比较它们的区别。
redis特点
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
redis安装
**下载地址:**https://github.com/MSOpenTech/redis/releases。
1,下载 Redis-x64-xxx.zip 并解压到redis的文件夹
2,切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf
3, 另启一个cmd窗口,原来的不要关闭,切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
4 ,设置键值对 set Key vale 取出键值对 get key
redis保持后台运行
-
进入 DOS窗口
-
在进入Redis的安装目录
-
输入:redis-server --service-install redis.windows.conf --loglevel verbose ( 安装redis服务 )
-
输入:redis-server --service-start ( 启动服务 )
-
输入:redis-server --service-stop (停止服务)
python操作redis
redis连接
普通连接
import redis
r = redis.Redis(host='127.0.0.1', port=6379, decode_responses='utf-8')
声明redis连接池的decode_responses
字段来对键值对进行默认编码
连接池连接
连接池连接参考 https://blog.csdn.net/yanerhao/article/details/82111468
redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认每个Redis实例都会维护一个自己的连接池。所以可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池