key的基本指令
- keys * 查询当前库的所有键
- exists 判断某个键是否存在
- type 查看键的类型
- del 删除某个键
- expire 为键设置过期时间,单位秒
- ttl 查看还有多少秒过期,-2表示过期,-表示永不过期
- dbsize 查看当前数据库key的数量,
- Flushdb 清空当前库
- flushall 清空所有库,慎用
数据类型String
- String是Redis最基本的类型。
- String是二进制安全的,意味着Redis的String可以包含任何数据,比如图片和序列化的对象
- get 查询对应的键值
- set 添加键值对
- append 将给定的value的末尾追加值
- strlen 获得值得长度
- setnx 只有key的值不存在时才设置key的值
- incr 只能对数字操作,将key 对应的值加一
- decr 只能对数字操作,将key 对应的值减一
- incrby 将key对应的数字增减,自定义步长
- mset 同时设置多个键值
- 同时获取多个值
- msetnx 同时设置多个键值,当且仅当key不存在时
- getrange 获得值得范围,如0到-1获得全部值
- setrange 覆盖value的值
- setex 设置值得同时设置过期时间
- getset 及旧换新,设置新值获取旧值
原子性:不会被线程的调度机制打断的操作,如incr key。在单线程中能够在单条指令中完成的操作都可以认为是原子操作
数据类型List
单键多值。
是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的左边或右边。
它的底层是个双向链表,对两端的操作性能很高。
- lpush/rpush 向左边或右边插入一个或多个值
- lpop/rpop 从左边或右边删除一个值
- rpoplpush 从一个list的右边吐出一个值插入到另一个list的左边
- lrange 按着索引下标获得元素0到-1获取所有
- lindex 按着索引下标获得元素
- llen 获得list的长度
- linsert key before/after value newvalue 在value前/后面插入一个newvalue
- lrem 从左边删除n个值
数据类型set
set与list功能类似,但是set的数据不能重复
Redis的set是string 类型的无序集合。它的底层是一个value为null的hash表
- sadd 将一个或多个元素添加到key中,重复的自动忽略
- smembers 取出该集合的所有值
- sismember 判断key集合中是否有某个值
- scard 返回集合元素的个数
- srem 删除集合中的某个元素
- spop 随机从集合中吐出一个值,会删除
- srandmember 随机从集合中取出多个值,不会删除
- sinter 返回两个集合的交集元素,
- sunion 返回两个集合的并集元素
- sdiff 返回两个集合的差集元素
数据类型hash
Redis的hash是一个键值对集合,是一个string类型的field和value的映射表,适合存储对象类似java里面的Map<String,String>
- hset 给集合key中filed键赋值value
- hget 从集合的属性中取出值
- hmset 批量设置hash的值
- hexists 是否存在某一属性
- hvals 列出hash集合所有的value
- hkeys 列出hash集合所有的filed
- hincrby 属性上追加增量
- hsetnx 为属性赋值,当属性不存在时
数据类型zset
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
- zadd 将一个或多个值和score加入到key中
- zrange 返回下标在某个范围之间的元素,加上WITHSCORES和成绩一起显示出来,从小到大
- zrevrabge 从大到小
- zrangebyscore 选择成绩范围内的数据,
- zrevrangebyscore 同上,改为从大到小排序
- zincrby 为元素的score加上增量
- zrem 删除指定集合下指定的值
- zcount 统计集合分数区间内元素的个数
- zrank 返回该值在集合中的排名