Redis入门



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 * 查看所有存在的keys
keys <pattern> 查找符合pattern的keys
exists <keyname> 检查是否存在
del <keyname> 删除指定的key
rename <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> ...] 设置hash
hkeys <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 redis

1
2
3
4
5
import redis
r = redis.Redis()
r.set('zoro', 'roronoa zoro')
r.get('zoro')
...


1.如果本文帮到了您,不妨点一下右下角的 分享按钮.
2.您的鼓励是博主写作最大的动力,感谢您的分享和赞赏.