一、Redis简介
Redis 是一种开源(BSD 许可)、内存中数据结构存储,用作数据库、缓存和消息代理。Redis 提供了数据结构,例如字符串、散列、列表、集合、带有范围查询的排序集合、位图、超级日志、地理空间索引和流。Redis 内置复制、Lua 脚本、LRU 驱逐、事务和不同级别的磁盘持久化,并通过 Redis Sentinel 和 Redis Cluster 自动分区提供高可用性。
二、Redis的五种数据类型介绍
1.string类型
string 类型是 Redis 最基本的数据类型,一个 key 对应一个 value。
string 类型是二进制安全的,意思是 redis 的 string 可以包含任何数据,比如jpg图片或者序列化的对象。一个Redis中字符串value最多可以存512M,但是我们不应该把内存当磁盘来用。
string类型的常用命令:
自加:incr
自减:decr
加: incrby
减: decrby
redis 127.0.0.1:6379> SET string_test "这是一个字符串"
OK
redis 127.0.0.1:6379> GET string_test
"这是一个字符串"
如图:
2.hash类型
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。每个 hash 可以存储 232 -1 键值对(40多亿)
hash数据类型支持的常用命令:
hset:添加hash数据
hget:获取hash数据
hmset:添加多个hash数据
hmget:获取多个hash数据
redis 127.0.0.1:6379> HMSET hash_test key1 "value1" key2 "value2"
OK
redis 127.0.0.1:6379> HMGET hash_test key1
"value1"
redis 127.0.0.1:6379> HMGET hash_test key2
"value2"
如图:
3.List类型
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
lpush:从左边推入
lpop:从右边弹出
rpush:从右变推入
rpop:从右边弹出
llen:查看某个list数据类型的长度
redis 127.0.0.1:6379> lrush list_test "元素1"
"1"
redis 127.0.0.1:6379> lrush list_test "元素2"
"2"
redis 127.0.0.1:6379> HMGET hash_test key2
"value2"
如图:
redis 127.0.0.1:6379> lpop list_test
"元素2"
如图:
4.Set类型(集合)
Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
set类型支持的常用命令:
sadd:添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
scard:查看set数据中存在的元素个数
sismember:判断set数据中是否存在某个元素
srem:删除某个set数据中的元素
smembers:列出所有数据
redis 127.0.0.1:6379> sadd set_test "dog"
"1"
redis 127.0.0.1:6379> sadd set_test "cat"
"1"
redis 127.0.0.1:6379> sadd set_test "cat"
"0"
redis 127.0.0.1:6379> smembers set_test
1) "dag"
2) "cat"
如图:
5.Sorted set类型(有序集合))
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zset类型支持的常用命令:
zadd:添加元素到集合,元素在集合中存在则更新对应score
zcard:查询个数
zrange:数据排序
redis 127.0.0.1:6379> zadd zset_test 10 "ana"
"1"
redis 127.0.0.1:6379> zadd zset_test 11 "kitty"
"1"
redis 127.0.0.1:6379> zadd zset_test 9 "lina"
"1"
redis 127.0.0.1:6379> zadd zset_test 13 "ana"
"0"
redis 127.0.0.1:6379> zcard zset_test
"3"
如图: