Redis简介
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis安装
Windows下载压缩包, 解压即可使用
Ubuntu sudo apt-get install redis-server
Redis启动
服务端 redis-server
客户端 redis-cli
Redis数据类型
- String(字符串)
- 最基本的数据类型,一个key对应一个value,个键最大能存储512MB。
- 二进制安全的,可以包含任何数据。
- Hash(哈希)
- 是一个键值对集合。
- 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
- 个 hash 可以存储 2^32 - 1 个键值对(40多亿)。
- List(列表)
- 是简单的字符串列表,按照插入顺序排序。
- 一个列表最多可以包含 2^32 - 1 个元素。
- Set(集合)
- 是string类型的无序集合。
- 通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
- 最大成员数也是 2^32 - 1。
- zset(sorted set:有序集合)
- zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
- 不同的是每个元素都会关联一个double类型的分数,用于对成员进行从小到大的排序。
- zset的成员是唯一的,但分数(score)却可以重复。
Redis命令
Key命令
keys * 查看所有存在的keyskeys <pattern> 查找符合pattern的keysexists <keyname> 检查是否存在del <keyname> 删除指定的keyrename <keyname> <newname> 重命名type <keyname> 查看key的存储类型
String命令
set <key> <value> 设置字符串get <key> 获取字符串getset <key> <value> 获取字符串,同时设置新的字符串getrange <key> start stop 获取指定范围的子字符串mset <key1> <value1> [<key2> <value2> ...] 同时设置多个字符串mget <key1> [<key2> ...] 同时获取多个字符串setnx <key> <value> 当键不存在是设置字符串setrange <key> offset <value> 获取指定偏移量的子字符串strlen <key> 获取字符创长度append <key> <value> 在字符串结尾追加字符串
Hash命令
hset <key> <field> <value> 更改或新增指定字段的值hmset <key> <field1> <value1> [<field2> <value2> ...] 设置hashhkeys <key> 获取指定key的所有字段名hgetall <key> 获取所有字段和值hget <key> <field> 获取指定字段的值hlen <key> 获取字段的个数hexists <key> <field> 检查是否存在某字段hdel <key> <field> 删除指定字段hmset <key> <field1> <value1> [<field2> <value2>...]
List命令
lpush <key> <value1> [<value2>...] 开头插入元素lpop <key> 取出开头元素lindex <key> <index> 获取指定元素llen <key> 列表长度lrange <key> <start> <stop> 获取指定范围的元素lset <key> <index> <value> 设置指定位置的元素值lpushx <key1> <value1> [<key2> <value2>...] 插入多个元素ltrim <key> <start> <stop> 修剪列表rpush ... 结尾插入rpushx ... 结尾插入多个rpop 取出结尾元素
Set命令
sadd <key> <member1> [<member2>...] 添加成员smembers <key> 列出所有成员scard <key> 成员数spop <key> 移除并返回随机一个成员srem <key> <member1>[<member2>...] 移除一个或多个成员sdiff <key1> <key2> 差集sinter <key1> <key2> 交集sunion <key1> <key2> 并集
Sorted Set命令
zadd <key> <score1> <member1> [...] 添加成员zcard <key> 成员数zrange <key> <start> <stop> [withscores] 返回指定区间的成员zrank <key> <member> 返回指定成员的索引zrem <key> <member>[...] 移除成员zscore <key> <member> 返回成员的分数
Python操作Redis
pip install redis1
2
3
4
5import redis
r = redis.Redis()
r.set('zoro', 'roronoa zoro')
r.get('zoro')
...

