类型 | 简介 | 特性 | 场景 |
---|---|---|---|
String(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | — |
Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) | 存储、读取、修改用户属性 |
List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列 |
Set(集合) | 哈希表实现,元素不重复 | 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Sorted Set(有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜 2、带权重的消息队列 |
string类型是二进制安全的,redis的string可以包含任何数据,如图像、序列化对象。一个键最多能存储512MB。二进制安全是指,在传输数据的时候,能保证二进制数据的信息安全,也就是不会被篡改、破译;如果被攻击,能够及时检测出来 。
设置键值 :set key value
获取键值 ,如果不存在此键则返回nil :get key
设置多个键值:mset key1 value1 key2 value2
获取多个键值:mget key1 key2
设置键值及过期时间,以秒为单位 :setex key seconds value
只有在 key 不存在时设置 key 的值。setnx key value
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。MSETNX key value [key value ...]
返回 key 中字符串值的子字符 GETRANGE key start end
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。GETSET key value
将key对应的value加1 。INCR key
将key对应的value加整数 。 INCRBY key increment
将key对应的value减1 。 DECR key
将key对应的value减整数。 DECRBY key decrement
追加值 APPEND key value
获取值长度 STRLEN key
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis 中每个 hash 可以存储 2的32次方 - 1 键值对(40多亿)。
hset key field value
hmset key field1 value1 field2 value2 ...
HSETNX key field value
hget key field
hmget key field1 field2 ...
hkeys key
hvals key
hdel key field1 field2 ..
.del key
hexists key field
列表是简单的string列表,按照插入顺序排序,可以在列表的头部或者尾部添加元素。
lpush key value1 value2 ...
rpush key value1 value2 ...
linsert key before或after 现有元素 新元素
lrange key start stop
lset key index value
lpop key
rpop key
lrem key count value
llen key
lindex key index
⽆序集合,元素为string类型,元素具有唯⼀性,不重复。说明:对于集合没有修改操作。
sadd key member1 member2 ...
scard key
smembers key
sorted set,有序集合,元素为string类型,元素具有唯⼀性,不重复。每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序。说明:没有修改操作。
zadd key score1 member1 score2 member2 ..
向键’a4’的集合中添加元素’lisi’、‘wangwu’、‘zhaoliu’、‘zhangsan’,权重分别为4、5、6、3
返回指定范围内的元素 :zrange key start stop
返回元素个数:zcard key
返回score值在min和max之间的成员 : zrangebyscore key min max
返回成员member的score值 : zscore key member
删除指定元素 :zrem key member1 member2 ..
删除权重在指定范围的元素:zremrangebyscore key min max