Redis基础
1.什么是Redis
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
2.Redis数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
2.1 Redis字符串
1.存储: set key value
127.0.0.1:0>set username lee
"OK"
2.获取 : get key
127.0.0.1:0>get username
"lee"
3.存储指定过期时间数据 setex key seconds value
127.0.0.1:0>setex password 60 123456
"OK"
4.删除
127.0.0.1:0>del username
"1"
2.2 Redis哈希(Hash)
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
1.存储 hset key field value
127.0.0.1:0>hset user name lee
"1"
127.0.0.1:0>hset user height 185
"1"
2.获取 hget key field 获取指定的 key 中 field 对应的值
127.0.0.1:0>hget user name
"lee"
127.0.0.1:0>hget user height
"185"
3.获取所有哈希表中的字段 hkeys key
127.0.0.1:0>hkeys user
1) "name"
2) "height"
4.获取在哈希表中指定 key 的所有字段和值 hgetall key
127.0.0.1:0>hgetall user
1) "name"
2) "lee"
3) "height"
4) "185"
5.同时将多个 field-value (域-值)对设置到哈希表 key 中。 HMSET key field1 value1 field2 value2
127.0.0.1:0>hmset user weight 70 age 25
"OK"
6.查看哈希表 key 中,指定的字段是否存在。 hexists key field 1代表存在 0代表不存在
127.0.0.1:0>hexists user name
"1"
127.0.0.1:0>hexists user aaa
"0"
7.删除一个或多个哈希表字段 hdel key field1 field2
127.0.0.1:0>hdel user age
"1"
2.3 Redis列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
1.将元素添加到列表左边 lupsh key value
127.0.0.1:0>lpush number one
"1"
127.0.0.1:0>lpush number two
"2"
2.将元素添加到列表右边 rpush key value
127.0.0.1:0>rpush number three
"3"
127.0.0.1:0>rpush number four
"4"
3.获取列表指定范围内的元素 lrange key start stop (stop为-1代表全部)
127.0.0.1:0>lrange number 0 -1
1) "two"
2) "one"
3) "three"
4) "four"
4.移出并获取列表的第一个元素 lpop key
127.0.0.1:0>lpop number
"two"
5.
127.0.0.1:0>rpop number
"four"
2.4 Redis集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
1.存储 sadd key value
127.0.0.1:0>sadd bird age
"1"
127.0.0.1:0>sadd bird height
"1"
127.0.0.1:0>sadd bird type
"1"
2. 获取 set 集合中所有元素 smembers key
127.0.0.1:0>smembers bird
1) "age"
2) "height"
3) "type"
3. 删除set 集合中的指定元素 srem key value
127.0.0.1:0>srem bird height
"1"
4. SUNION key1 key2 返回所有给定集合的并集
5. SINTER key1 key2 返回给定所有集合的交集
6. SDIFF key1 key2 返回第一个集合与其他集合之间的差异
2.5 Redis有序集合(sorted set)
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复
1.存储 zadd key score value
127.0.0.1:0>zadd student 1 lee
"1"
127.0.0.1:0>zadd student 2 yu
"1"
2.获取 zrange key start end [withscores] (end 为-1 代表所有)
127.0.0.1:0>zrange student 0 -1 withscores
1) "lee"
2) "1"
3) "yu"
4) "2"
3.删除 zrem key value
127.0.0.1:0>zrem student yu
"1"