Redis学习笔记

Redis学习笔记

标签(空格分隔): PHP Redis


Redis简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  • 还提供list,set,zset,hash等多种数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis的数据类型

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

string字符串类型

string是Redis最基本的类型,一个key对应一个value。Redis的string可以存储任何数据,包括对象序列化之后的字符串。一个key最大可以存储512M的string数据。可以类似的理解为josn

[
    "name": "tingyugetc",
    "age": "20",
]

对于string的一般操作方法有如下几种:

命令 备注
set 设置键的值
get 获取键的值
del 删除键值

示例:

127.0.0.1:6379> set name "tingyuge" // 设置值,成功返回OK
OK
127.0.0.1:6379> get name            // 获取值,返回值
"tingyuge"
127.0.0.1:6379> del name            // 删除键值
(integer) 1
127.0.0.1:6379> get name            // 再次尝试获取值,获取不到返回nil
(nil)
127.0.0.1:6379> 
list列表类型

list可以在一个键下面存储多个值,这些值可以是重复的值。

[
    "user": [
        "tingyuge",
        "china",
        "20"
    ]
]

其常用的操作方法:

命令 备注
rpush 从列表的右侧添加元素
lpush 从列表的左侧添加元素
rpop 从列表的右侧删除一个元素
lpop 从列表的左侧删除一个元素
lindex 获取列表在给定位置上的一个元素
lrange 获取给定范围所有元素

示例:

127.0.0.1:6379> rpush list-key item         // 右侧添加,添加成功会返回当前列表的长度
(integer) 1
127.0.0.1:6379> rpush list-key item2
(integer) 2
127.0.0.1:6379> rpush list-key item
(integer) 3
127.0.0.1:6379> lrange list-key 0 -1        // 获取一定范围内的值, 返回范围的值,其中-1代表元素结束的位置。
1) "item"
2) "item2"
3) "item"
127.0.0.1:6379> lpush list-key item3        // 左侧添加
(integer) 4
127.0.0.1:6379> lrange list-key 0 -1
1) "item3"                                  // 左侧添加的元素在最前面
2) "item"
3) "item2"
4) "item"
127.0.0.1:6379> 
set集合类型

set集合list列表类似,只不过在set集合中不能存储重复的元素。

[
    "user": {
        "tingyugetc",
        "tingyugetc1",
        "tingyugetc2"
    }
]

其常用的方法为:

命令 备注
sadd 将指定的元素添加到集合
smembers 返回集合所包含的所有元素,如果数据量大, 谨慎使用
sismember 检查给定的元素是否在集合中
srem 如果给定的元素在集合中,则删除它

示例:

127.0.0.1:6379> sadd set-key "item"             // 添加成功,返回1
(integer) 1
127.0.0.1:6379> sadd set-key "item1"
(integer) 1
127.0.0.1:6379> sadd set-key "item2"
(integer) 1
127.0.0.1:6379> sadd set-key "item2"            // 元素已经存在,添加失败,返回0
(integer) 0
127.0.0.1:6379> smembers set-key                // 查看元素
1) "item2"
2) "item1"
3) "item"
127.0.0.1:6379> sismember set-key item          // 检查元素是否在集合中,在返回1,不在返回0
(integer) 1
127.0.0.1:6379> srem set-key item               // 删除元素,成功返回删除的个数
(integer) 1
127.0.0.1:6379> srem set-key item               // 删除不存在的元素返回0,删除失败返回0
(integer) 0
127.0.0.1:6379> sismember set-key item          // 元素已经删除
(integer) 0
127.0.0.1:6379> smembers set-key
1) "item2"
2) "item1"
127.0.0.1:6379> 
zset有序集合

zsetset一样都不允许存在重复的元素,不同的是zset的每个元素都会关联一个score,Redis正是通过score对元素进行从小到大的排序。zset的元素是唯一的但是score可以重复。

[
    "user": {
        1: "tingyugetc",
        2: "tingyugetc2",
        3: "tingyugetc3"
    }
]

其常用的操作:

命令 备注
zadd 向有序集合添加一个或多个成员,或者更新已存在成员的分数
zcard 获取有序集合的成员数
zrange 通过索引区间返回有序集合成指定区间内的成员
zrem 移除有序集合中的一个或多个成员
zscore 返回有序集中,成员的分数值
zrevrank 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

示例:

127.0.0.1:6379> zadd zset-key 1 item            // 添加元素
(integer) 1
127.0.0.1:6379> zadd zset-key 2 item
(integer) 0
127.0.0.1:6379> zadd zset-key 2 item2
(integer) 1
127.0.0.1:6379> zadd zset-key 3 item3
(integer) 1
127.0.0.1:6379> zcard zset-key                  // 计算成员数
(integer) 3
127.0.0.1:6379> zrange zset-key 0 -1            // 获取索引区间内的元素
1) "item"
2) "item2"
3) "item3"
127.0.0.1:6379> zrange zset-key 0 -1 withscores // 获取元素同时获取元素的score
1) "item"
2) "2"
3) "item2"
4) "2"
5) "item3"
6) "3"
127.0.0.1:6379> zrem zset-key item              // 删除元素
(integer) 1
127.0.0.1:6379> zscore zset-key item2           // 获取元素的score
"2"
127.0.0.1:6379> zrevrank zset-key item2         // 获取元素的排名
(integer) 1
127.0.0.1:6379> 
Hash哈希

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

[
    "user": {
        "name": "tingyuge",
        "age": "20"
    }
]

常用的操作:

命令 备注
hmset 同时将多个 field-value (域-值)对设置到哈希表 key 中。
hset 将哈希表 key 中的字段 field 的值设为 value 。
hmget 获取所有给定字段的值
hget 获取存储在哈希表中指定字段的值。
hgetall 获取在哈希表中指定 key 的所有字段和值
hkeys 获取所有哈希表中的字段键值
hvals 获取哈希表中所有值
hdel 删除一个或多个哈希表字段

示例:

127.0.0.1:6379> hmset hash-key name "tingyuge" age "20"     // 设置hash表
OK
127.0.0.1:6379> hgetall hash-key                            // 获取hash的keys与values
1) "name"
2) "tingyuge"
3) "age"
4) "20"
127.0.0.1:6379> hget hash-key name                          // 获取name的值
"tingyuge"
127.0.0.1:6379> hkeys hash-key
1) "name"
2) "age"
127.0.0.1:6379> hmget hash-key name
1) "tingyuge"
127.0.0.1:6379> hset hash-key city "nanjing"                // 设置key的值
(integer) 1
127.0.0.1:6379> hgetall hash-key
1) "name"
2) "tingyuge"
3) "age"
4) "20"
5) "city"
6) "nanjing"
127.0.0.1:6379> hvals hash-key
1) "tingyuge"
2) "20"
3) "nanjing"
127.0.0.1:6379> 
原文地址:https://www.cnblogs.com/tingyugetc/p/5929257.html