Redis

redis

redis 的数据结构:

  • 字符串 String
  • 哈希 Hash : 键值对, map 格式
  • 列表 List :可以从列表头部或尾部插入元素
  • 集合 Set : 不允许重复元素,无序
  • 有序集合 zset : sortedset ,不允许重复元素,且元素有顺序
String (字符串)

String 类型是二进制安全的。
意思是 redis 的 String 可以包含任何数据,比如 jpg 图片 或者 序列化的对象
String 类型是 Redis 最基本的数据类型,一个键最大能存储 512 MB

127.0.0.1:6379> set name "redis.net.cn"
OK
127.0.0.1:6379> get name
"redis.net.cn"
127.0.0.1:6379> del name
(integer) 1

以上实例我们使用了Redis 的 SET 和 GET 命令。键为 name , 对应的值为 redis.net.cn

Hash (哈希)

hash 是一个键值对集合
hash 是一个 String 类型的 filed 和 value 的映射表, hash 特别适合用于存储对象
Redis中每个 hash 可以存储 2 ^ (32 - 1) 键值对(40多亿)

127.0.0.1:6379> HMSET user:1 username redis.net.cn password redis.net.cn points 200
OK
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "redis.net.cn"
3) "password"
4) "redis.net.cn"
5) "points"
6) "200"
127.0.0.1:6379> hset user:1 age 18
(integer) 1
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "redis.net.cn"
3) "password"
4) "redis.net.cn"
5) "points"
6) "200"
7) "age"
8) "18"
127.0.0.1:6379> hget user:1 age
"18"
127.0.0.1:6379> hdel user:1 age
(integer) 1
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "redis.net.cn"
3) "password"
4) "redis.net.cn"
5) "points"
6) "200"

以上实例中 hash 数据类型 存储了包含用户脚本信息的 用户对象。
实例中我们使用了 HMSET,HGETALL 命令,user:1为键值

List (列表)

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

127.0.0.1:6379> lpush redis.net.cn redis
(integer) 1
127.0.0.1:6379> lpush redis.net.cn mongodb
(integer) 2
127.0.0.1:6379> lpush redis.net.cn rabitmq
(integer) 3
127.0.0.1:6379> lrange redis.net.cn 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
127.0.0.1:6379> LRANGE redis.net.cn 0 -1
1) "rabitmq"
2) "mongodb"
3) "redis"
127.0.0.1:6379> rpush redis.net.cn mysql
(integer) 4
127.0.0.1:6379> lrange redis.net.cn 0 -1
1) "rabitmq"
2) "mongodb"
3) "redis"
4) "mysql"
127.0.0.1:6379> lpop redis.net.cn
"rabitmq"
127.0.0.1:6379> lrange redis.net.cn 0 -1
1) "mongodb"
2) "redis"
3) "mysql"
127.0.0.1:6379> rpop redis.net.cn
"mysql"
127.0.0.1:6379> lrange redis.net.cn 0 -1
1) "mongodb"
2) "redis"

列表最多可以存储 2 ^ (32 - 1) 元素(4294967295, 每个列表可存储40多亿)

Set (集合)

Redis的 Set 是 String 类型的无序集合。
集合是通过哈希表实现的,所以添加、查找、删除的复杂度都是 O(1) 。

127.0.0.1:6379> sadd redis.net.cn.2 redis
(integer) 1
127.0.0.1:6379> sadd redis.net.cn.2 mongodb
(integer) 1
127.0.0.1:6379> sadd redis.net.cn.2 rabitmq
(integer) 1
127.0.0.1:6379> sadd redis.net.cn.2 rabitmq
(integer) 0
127.0.0.1:6379> smembers redis.net.cn.2
1) "redis"
2) "rabitmq"
3) "mongodb"
127.0.0.1:6379> srem redis.net.cn.2 rabitmq
(integer) 1
127.0.0.1:6379> smembers redis.net.cn.2
1) "redis"
2) "mongodb"

注意:以上实例中,rabitmq添加了两次,但是根据集合内元素的唯一性,第二次插入的元素将被忽略。
集合中最大的成员数为 2 ^ (32 - 1) (4294967295, 每个集合可存储40多亿个成员)

zset (sorted set : 有序集合)

zsetset 一样也是 String 类型元素的集合,且不允许重复的成员
不同的是每个元素都会关联一个 double 类型的分数。
Redis正式通过分数来为集合中的成员进行从小到大的排序。

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

127.0.0.1:6379> zadd redis.net.cn.3 0 redis
(integer) 1
127.0.0.1:6379> zadd redis.net.cn.3 0 mongodb
(integer) 1
127.0.0.1:6379> zadd redis.net.cn.3 0 rabitmq
(integer) 1
127.0.0.1:6379> zadd redis.net.cn.3 0 rabitmq
(integer) 0
127.0.0.1:6379> zrangebyscore redis.net.cn.3 0 100
1) "mongodb"
2) "rabitmq"
3) "redis"
127.0.0.1:6379> zrange redis.net.cn.3 0 -1
1) "mongodb"
2) "rabitmq"
3) "redis"
127.0.0.1:6379> zrange redis.net.cn.3 0 -1 withscores
1) "mongodb"
2) "0"
3) "rabitmq"
4) "0"
5) "redis"
6) "0"
127.0.0.1:6379> zrem redis.net.cn.3 redis
(integer) 1
127.0.0.1:6379> zrange redis.net.cn.3 0 -1
1) "mongodb"
2) "rabitmq"
127.0.0.1:6379> zrange redis.net.cn.3 0 -1 withscores
1) "mongodb"
2) "0"
3) "rabitmq"
4) "0"

通用命令

  1. keys * : 查询所有键
  2. type key : 获取键对应的 value 的类型
  3. del key : 删除指定 key value

你可能感兴趣的:(Redis)