《Redis实战》
认真学习Redis,记录《Redis实战》的概念笔记
一、初始Redis
Redis可以存储键和五种不同数据结构之间的映射:STRING(字符串),LIST(列表),SET(集合),HASH(散列),ZSET(有序集合)。
字符串String的常见命令包括
GET:获取给定键中的值
SET:设置给定键中的值
DEL:删除给定键中的值
列表LIST的常见操作包括以下,左右对称
- RPPUSH:将给定的值推到列表的右端
- LRANGE:获取列表在给定范围上的所有值
- LINDEX:获取列表在给定位置上的单个元素
- LPOP:从列表的左端弹出一个值,并返回该值
集合SET保证存储的都是不相同的,常见操作
- SADD:元素添加到集合
- SMEMBERS:返回集合所有元素
- SISMENBER:检查给定元素是否在集合中
- SREM:如果给定的元素存在于集合中,那么移除这个元素
散列HASH,类似于MySql中的行的概念,很像一个微缩版的Redis,常见命令
- HSET:在散列里面关联给定的键值对
- HGET:获取指定散列键的值
- HGETALL:获取散列包含的所有键值对,返回键和值的字典形式
- HDEL:如果给定键存在于散列里面,那么移除这个键
有序集合ZSET,存储键值对。其中的键被称为成员,每个成员各不相同,值被称为分值。唯一的一个可以根据成员访问值,也可以根据值访问成员。常见操作命令:
- ZADD:将一个带有给定值的成员添加到有序集合里面
- ZRANGE:根据元素在有序排列中所处的位置,从有序集合里面获取多个元素
- ZRANGEBYSCORE:获取有序集合在给定分值范围内的所有元素
- ZREM:如果给定成员存在于有序集合,那么移除这个成员。
二、使用Redis构建web应用
典型的引用场景包络以下
- 登录和cookie缓存。签名(signed)cookie和令牌(token)cookie
- 用Redis实现购物车,存储商品id和商品订购数量之间的映射
- 网页缓存,缓存不经常变动的网页结果
- 缓存部门关系数据库中的行
- 缓存部门页面:通过页面压缩、Edge Side includes技术、移除模版无用字符等优化
三、Redis命令
字符串命令
- INCR
- DECR
- INCRBY:键存储的值加整数
- DECRBY
- INCRBYFLOAT:键存储的值加浮点数
- APPEND:将值追加到给定键当前存储值的末尾
- GETRANGE:获取一个由偏移量start至end范围内所有字符组成的子串,包括start和end在内
- SETRANGE:从start偏移量开始的子串设置为给定值
- GETBIT:获得偏移量的二进制值
- SETBIT:设置偏移量的二进制值
- BITCOUNT:统计值为1的二进制值的数量
- BITOP:执行按位运算操作
列表命令
- BLPOP: 核心作用是从列表左侧(表头)弹出元素,若列表为空则阻塞等待,直到有元素可用或超时
- BRPOP
- RPOPLPUSH:从source-key列表中弹出位于最左端的元素,然后将这个元素推入dest-key列表的最左端
集合命令
- SCARD:返回集合包含的元素数量
- SMEMBERS:返回集合包含的所有元素
- SRANDMEMBER:从集合中随机的返回一个或多个元素
- SMOVE:包含某个元素,那么则移除并添加到另一个集合中
- SDIFF:返回存在于第一个集合、但不属于其他集合的元素
- SDIFFSTORE:进行差运算之后存储到新的键里面
- SINTER:返回同时存在于所有集合中的元素,交集操作
- SINTERSTORE:交集并存储
- SUNION:并集
- SUNIONSTORE:并集并存储
散列命令
- HMGET:从散列里面获取一个或多个键的值
- HMSET:设置值
- HDEL:删除值
- HLEN:返回散列包含的键值对数量
- HEXISTS:检查是否在散列表中
- HKEYS:获取散列包含的所有键
- HVALS:获取散列包含的所有值
- HGETALL:获取散列包含的所有键值对
- HINCRYBY:将键key存储的值加上整数increment
- HINCRYBYFLOAT:值加上浮点数
有序集合