1. NoSQL
1.1 NoSQL是什么
- 泛指非关系型的数据库
- 不适用于SQL语法
- 存储形式是键值对(key,value)
- 每种nosql数据库都有自己的语法和api,及擅长的领域
1.2 redis的特性
- Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
1.3 Redis的优势
- 性能极高,读写速度极快
- 丰富的数据类型
- Redis的所有操作都是原子性
- 丰富的特性
2. Redis数据库的操作
- 服务器端的命令为:redis-server
- 客户端的命令为:redis-cli
- 可以使--help查看帮助文档:redis-cli --help
- 连接redis:redis-cli
- 切换数据库:select num
2.1 string类型
- 值命令
- 设置键值:set key value
- 设置键值及过期时间,以秒为单位:setex key seconds value
- 设置多个键值:mset key1 value1 key2 value2 ...
- 追加值:append key value
- 根据键获取值,如果不存在此键则返回nil:get key
- 根据多个键获取多个值:mget key1 key2 ..
- 键命令
- 查找键,参数支持正则表达式:keys pattern
- 判断键是否存在,如果存在返回1,不存在返回0:exists key1
- 查看键对应的value的类型:type key
- 删除键及对应的值:del key1 key2 ...
- 如果没有指定过期时间则一直存在,直到使用DEL移除:expire key seconds
- 查看有效时间,以秒为单位:ttl key
2.2 hash类型
- 设置单个属性:hset key field value
- 设置多个属性:hmset key field1 value1 field2 value2 ...
- 获取指定键所有的属性:hkeys key
- 获取单个属性的值:hget key field
- 获取多个属性的值:hmget key field1 field2 ...
- 获取所有属性的值:hvals key
- 删除属性,属性对应的值会被一起删除:hdel key field1 field2 ...
2.3 zset类型
- 添加:zadd key score1 member1 score2 member2 ...
- start、stop为元素的下标索引,索引从左侧开始,第1个元素为0,索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素:zrange key start stop
- 返回score值在min和max之间的成员:zrangebyscore key min max
- 返回成员member的score值:zscore key member
- 删除指定元素:zrem key member1 member2 ...
- 删除权重在指定范围的元素:zremrangebyscore key min max
3. Redis与python的交互
- 通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0
- 根据不同的类型,拥有不同的实例方法可以调用,与前⾯学的redis命令对应,⽅法需要的参数与命令的参数一致
sr = StrictRedis(host='localhost', port=6379, db=0)
简写
sr=StrictRedis()
string
-
set
-
setex
-
mset
-
append
-
get
-
mget
-
key
-
keys
-
exists
-
type
-
delete
-
expire
-
getrange
-
ttl
hash
- hset
- hmset
- hkeys
- hget
- hmget
- hvals
- hdel
list
- lpush
- rpush
- linsert
- lrange
- lset
- lrem
set
- sadd
- smembers
- srem
zset
- zadd
- zrange
- zrangebyscore
- zscore
- zrem
- zremrangebyscore
链接Redis,实现增删改查等命令
from redis import *
if __name__=="__main__":
try:
#创建StrictRedis对象,与redis服务器建⽴连接
sr=StrictRedis()
except Exception as e:
print(e)