目录
简介
远程字典服务器,是开源协议的NoSQL技术,是基于单线程的内存数据存储结构,支持 Java, Python , Lua等多种语言调用API调用,可以作为数据库, 缓存服务器使用。
Redis具有多种优势,在高速web开发等领域具有广泛前景
Redis使用NoSQL的 键值对存储方式,支持字符串,哈希表,列表,集合等存储结构
支持内存数据的磁盘持久化存储,支持主从模式的数据备份
Redis运行在内存中,支持多种数据结构的高速读/写操作,性能优越,远超数据库中开源数据结构存储技术
管理
在安装目录下
redis-cli
测试是否接通Ping
应答PONG
查找所有符合给定模式pattern的key Keys
Redis默认有16个数据库,编号0~15.select编号表示切换到对应 select 1/2/3...
当前数据库的记录数 dbsize
删除当前数据库记录 flushdb
删除所有数据库记录 flushall
查看某个键下数据的类型 type
Redis的数据存储
Redis中提供了七种数据类型,分别是String, Hash , List, Set, ZSet, HyperLogLog、BitMap。
String
key对应的Value是一个字符串类型
set
set key value #设置键值对,如果键存在,则修改。不存在为新建
get
get key #返回键名对应的值,如果不存在返回null
append
append key value #追加内容
setrange
setrange key offset value #修改字符串内容,从偏移offset开始,用value替换
*在使用 set、append命令时,如果key不存在则创建,否则替换Key对应的Value值
List
List是 Redis 的链表结构(列表结构,有序可重复),用于存储有序元素集合,可以从左,右端入栈,出栈,索引。
LPush 或 RPush
LPush listname v1 v2 #从左端添加元素
LRange
Lrange listname start end #读取指定范围的数据
LDrop或RDrop
LDrop listname #从左到右删除第一个元素
Llen
Llen listname #列表长度
Lindex
Lindex listname num #返回指定位置的元素
lrem
#删除链表中指定个数个Value(若count为正数,则从链表的左侧开始删除指定个数个Value,若count为负数,则从链表的右侧开始删除指定个数个Value,若count为0,则删除链表中所有指定的Value) lrem key count value
*当使用lpush、rpush命令时,如果Key不存在则创建,否则往Key对应的链表中追加元素。
Hash
以哈希结构(键值对)存储数据,每个哈希值类型中都包含若干个键值对(属性名与属性值)
Hset 或HMset
#设置一个或者多个字典的值
Hset dicname key value
HMset dicname k1 v1 k2 v2
Hget或Hgetall
#获取某个键的值或者获取全部字典的内容
hget dicname key
Hdel
hdel dicname key #按键名删除内容
*在使用hset、hmset命令时,如果key不存在则创建,否则往key对应得Hash中添加元素,如果属性名相同则替换属性值。
set
key对应得value是一个集合类型(无序不重复)
sadd
Sadd setname v1 v2 v3 #添加数据到集合
Scard
scard setname #查看集合元素的个数
Smembers
Smembers setname #查看集合内的元素
srem
srem setname v1 #删除集合内一个或多个值
*在使用sadd命令时,如果Key不存在则创建,否则往Key对应的Set中追加元素。
Sorted set(ZSet)
有序集合,不允许有重复值,每个值有一个权重(分数可以相同,value不能相同)
Zadd
Zadd setname s1 v1 s2 v2
Zcard
#查看集合元素个数
Zcard setname
Zrange
zrange setname start end #显示有序集合范围的元素
zrem
zrem setname v1 v2 #移除有序集合中的一个或多个
Python与 Redis交互
安装
pip install redis
使用
#创建连接池
pool=redis.ConnectionPool(host='127.0.0.1',port=6379,db=1,decode_response=True)
#创建连接对象
cli=redis.Redis(connection_pool=pool)
#写入字符串类型
res=cli.set('name','Richard')
#读取字符串类型
res=cli.get('name')