面向工资编程,面向面试学习!

Redis 教程

Redis 教程Redis 简介Redis 安装Redis 配置Redis 数据类型Redis 命令Redis 键(key)Redis DEL 命令Redis Dump 命令Redis EXISTS 命令Redis Expire 命令Redis Expireat 命令Redis Keys 命令Redis PEXPIREAT 命令Redis Move 命令Redis PERSIST 命令Redis Pttl 命令Redis TTL 命令Redis RANDOMKEY 命令Redis Rename 命令Redis Renamenx 命令Redis Type 命令Redis 字符串(String)Redis SET 命令Redis Get 命令Redis Getrange 命令Redis Getset 命令Redis Getbit 命令Redis Mget 命令Redis Setbit 命令Redis Setex 命令Redis Setnx 命令Redis Setrange 命令Redis Strlen 命令Redis Mset 命令Redis Msetnx 命令Redis Psetex 命令Redis Incr 命令Redis Incrby 命令Redis Incrbyfloat 命令Redis Decr 命令Redis Decrby 命令Redis Append 命令Redis 哈希(Hash)Redis Hdel 命令Redis Hexists 命令Redis Hget 命令Redis Hgetall 命令Redis Hincrby 命令Redis Hincrbyfloat 命令Redis Hkeys 命令Redis Hlen 命令Redis Hmget 命令Redis Hmset 命令Redis Hset 命令Redis Hsetnx 命令Redis Hvals 命令Redis 列表(List)Redis Blpop 命令Redis Brpop 命令Redis Brpoplpush 命令Redis Lindex 命令Redis Linsert 命令Redis Llen 命令Redis Lpop 命令Redis Lpush 命令Redis Lpushx 命令Redis Lrange 命令Redis Lrem 命令Redis Lset 命令Redis Ltrim 命令Redis Rpop 命令Redis Rpoplpush 命令Redis Rpush 命令Redis Rpushx 命令Redis 集合(Set)Redis Sadd 命令Redis Scard 命令Redis Sdiff 命令Redis Sdiffstore 命令Redis Sinter 命令Redis Sinterstore 命令Redis Sismember 命令Redis Smembers 命令Redis Smove 命令Redis Spop 命令Redis Srandmember 命令Redis Srem 命令Redis Sunion 命令Redis Sunionstore 命令Redis Sscan 命令Redis 有序集合(sorted set)Redis Zadd 命令Redis Zcard 命令Redis Zcount 命令Redis Zincrby 命令Redis Zinterstore 命令Redis Zlexcount 命令Redis Zrange 命令Redis Zrangebylex 命令Redis Zrangebyscore 命令Redis Zrank 命令Redis Zrem 命令Redis Zremrangebylex 命令Redis Zremrangebyrank 命令Redis Zremrangebyscore 命令Redis Zrevrange 命令Redis Zrevrangebyscore 命令Redis Zrevrank 命令Redis Zscore 命令Redis Zunionstore 命令Redis Zscan 命令Redis HyperLogLogRedis Pfadd 命令Redis Pfcount 命令Redis PFMERGE 命令Redis 发布订阅Redis Psubscribe 命令Redis Pubsub 命令Redis Publish 命令Redis Punsubscribe 命令Redis Subscribe 命令Redis Unsubscribe 命令Redis 事务Redis Discard 命令Redis Exec 命令Redis Multi 命令Redis Unwatch 命令Redis Watch 命令Redis 脚本Redis Eval 命令Redis Evalsha 命令Redis Script Exists 命令Redis Script Flush 命令Redis Script kill 命令Redis Script Load 命令Redis 连接Redis Auth 命令Redis Echo 命令Redis Ping 命令Redis Quit 命令Redis Select 命令Redis 服务器Redis Bgrewriteaof 命令Redis Bgsave 命令Redis Client Kill 命令Redis Client List 命令Redis Client Getname 命令Redis Client Pause 命令Redis Client Setname 命令Redis Cluster Slots 命令Redis Command 命令Redis Command Count 命令Redis Command Getkeys 命令Redis Command Info 命令Redis Config Get 命令Redis Config rewrite 命令Redis Config Set 命令Redis Config Resetstat 命令Redis Dbsize 命令Redis Debug Object 命令Redis Debug Segfault 命令Redis Flushall 命令Redis Flushdb 命令Redis Info 命令Redis Lastsave 命令Redis Monitor 命令Redis Role 命令Redis Save 命令Redis Shutdown 命令Redis Slaveof 命令Redis Showlog 命令Redis Sync 命令Redis Time 命令Redis 数据备份与恢复Redis 安全Redis 性能测试Redis 客户端连接Redis 管道技术Redis 分区Java 使用 RedisPHP 使用 RedisRedis PEXPIRE 命令

Redis 数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。


String(字符串)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

实例

redis 127.0.0.1:6379> SET runoob "盘古教程"
OK
redis 127.0.0.1:6379> GET runoob
"盘古教程"

在以上实例中我们使用了 Redis 的 SETGET 命令。键为 runoob,对应的值为 盘古教程

注意:一个键最大能存储 512MB。


Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

实例

DEL runoob 用于删除前面测试用过的 key,不然会报错:(error) WRONGTYPE Operation against a key holding the wrong kind of value

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World"
"OK"
redis 127.0.0.1:6379> HGET runoob field1
"Hello"
redis 127.0.0.1:6379> HGET runoob field2
"World"

实例中我们使用了 Redis HMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value

每个 hash 可以存储 232 -1 键值对(40多亿)。


List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

实例

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。


Set(集合)

Redis 的 Set 是 string 类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

sadd 命令

添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。

sadd key member

实例

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob

1) "redis"
2) "rabitmq"
3) "mongodb"

注意:以上实例中 rabitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。


zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

zadd 命令

添加元素到集合,元素在集合中存在则更新对应score

zadd key score member 

实例

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabitmq"
3) "redis"