redis基础知识
Redis数据类型
Redis支持五种数据类型: string(字符串) , hash (哈希) , list (列表) , set (集合) , 及zset (sorted set : 有序集合)
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
string | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | -- |
hash | 键值对集合,即变成语言中的map类型 | 适合存储对象,并且可以像数据库中updata一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) | 存储、读取、修改用户属性 |
list | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列 |
set | 哈希表实现,元素不重复 | 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
sorted set | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜 2、带权重的消息队列 |
Redis命令
Redis keys 命令
DEL key ##该命令用于在 key 存在时删除 key。
DUMP key ##序列化给定 key ,并返回被序列化的值。
EXISTS key ##检查给定 key 是否存在。
EXPIRE key seconds ##为给定 key 设置过期时间,以秒计。
EXPIREAT key timestamp ##EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 #不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
PEXPIRE key milliseconds ##设置 key 的过期时间以毫秒计。
PEXPIREAT key milliseconds-timestamp ##设置 key 过期时间的时间戳(unix timestamp) 以毫秒计
KEYS pattern ##查找所有符合给定模式( pattern)的 key 。
MOVE key db ##将当前数据库的 key 移动到给定的数据库 db 当中。
PERSIST key ##移除 key 的过期时间,key 将持久保持。
PTTL key ##以毫秒为单位返回 key 的剩余的过期时间。
TTL key ##以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
RANDOMKEY ##从当前数据库中随机返回一个 key 。
RENAME key newkey ##修改 key 的名称
RENAMENX key newkey ##仅当 newkey 不存在时,将 key 改名为 newkey 。
TYPE key ##返回 key 所储存的值的类型。
Redis 字符串命令
SET key value ## 设置指定 key 的值
GET key ## 获取指定 key 的值。
GETRANGE key start end ## 返回 key 中字符串值的子字符
GETSET key value ## 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
GETBIT key offset ## 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
MGET key1 [key2..] ## 获取所有(一个或多个)给定 key 的值。
SETBIT key offset value ## 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
SETEX key seconds value ##将值value关联到key并将key的过期时间设为 seconds (以秒为单位)。
SETNX key value ## 只有在 key 不存在时设置 key 的值。
SETRANGE key offset value ##用value参数覆写给定key所储存的字符串值从偏移量 offset 开始。
STRLEN key ##返回 key 所储存的字符串值的长度。
MSET key value [key value ...] ##同时设置一个或多个 key-value 对。
MSETNX key value [key value ...] ##同时设置一个或多个key-value对当且仅当所有给定key都不存在。
PSETEX key milliseconds value ##这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
INCR key ##将 key 中储存的数字值增一。
INCRBY key increment ##将 key 所储存的值加上给定的增量值(increment) 。
INCRBYFLOAT key increment ##将 key 所储存的值加上给定的浮点增量值(increment) 。
DECR key ##将 key 中储存的数字值减一。
DECRBY key decrement ##key 所储存的值减去给定的减量值(decrement) 。
APPEND key value ##如果key已经存在并且是一个字符串,APPEND命令将指定的value追加到该key原来(value的末尾。