字符串操作
-mysql,oracle:关系型数据库
-redis,mongodb:非关系型数据库/nosql
-redis存储在内存中
-mongodb存储在硬盘上
# redis 是一个key-value存储系统
redis-cli 启动redis
Redis作用
- 缓存
- session数据
-对速度要求比较高的数据的存储
-做消息队列
# 包含5大数据类型
- strig 字符串 k1:'123'
- list 列表/数组 k2:[1,2,3,4]
- set 集合 k3:{1,2,3,4}
- zset 字典/哈希表 k4:{name:alan,age:12}
- hash 有序集合 k5:{('lqz',18),('egon',33)}
# redis和Memcached区别:
- Redis支持5大数据类型 Memcached仅支持字符串
- Redis支持持久化, Memcached不支持持久化
- Redis为单线程, 单进程,特点是速度快
# python使用Redis
首先安装redis pip3 install redis/ pychram 安装
使用:
import redis
# 拿到redis链接,类似于mysql
conn = redis.Redis(host='127.0.0.1', port=6379)
# 获取数据
name = conn.get('name', 'age')
redis字符串操作
get 获取数据
set 设置数据
mget 批量获取
mset 批量设置
incr 自增
decr 自减
append 追加
# redis中存的都是byte格式
# name,
# value,
# ex=None, px=None, ex 超时时间(秒) px 过期时间(毫秒)
# nx=False, nx,如果设置为True,则只有name不存在时,当前set操作才执行, 值存在,就修改不了,执行没效果
# xx=False xx,如果设置为True,则只有name存在时,当前set操作才执行,值存在才能修改,值不存在,不会设置新值
# setnx(name, value) 设置值,只有name不存在时,执行设置操作(添加),如果存在,不会修改
# setex(name, time, value) time,过期时间(数字秒 或 timedelta对象)
# conn.psetex(name, time_ms, value)
# 批量设置值mset
conn.set('name', 'alan')
conn.set('name', 'egon', nx=True)
conn.set('name', 'alan', xx=True)
conn.get('name')
conn.setex('k1',5,'k1')
conn.mset({'name': 'alan', 'age': 18, 'sex': 'male'})
print(conn.mget(['name', 'age', 'sex']))
print(conn.getset('name', 'alex'))
# 获取子序列(根据字节获取,非字符) name: redis的name, start起始位置, end结束位置
print(conn.getrange('name', 0, 3))
# 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加) offset,字符串的索引,字节 value,要设置的值
print(conn.setrange('name', 2, 'en'))
# 返回name对应值的字节长度(一个汉字3个字节)
print(conn.strlen('name'))
# 自增 age对应的值,当age不存在时,则创建age=amount,否则,则自增。 amount必须为整数
conn.incr('age', amount=1)
# 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。 浮点型
conn.incrbyfloat('name', amount=1.0)
# 自减 age对应的值,当age不存在时,则创建age=amount,否则,则自减。
conn.decr('age', amount=1)
# 在redis name对应的值后面追加内容
conn.append('name', '111111')
redis 连接池
# 新建一个模块
import redis
POOL = redis.ConnectionPool(host='127.0.0.1', port=6379, max_connections=1000)
# 使用连接池
from conn_pool import POOL
conn = redis.Redis(connections_pool=POOL)