文章目录
- 一:字符串类型string
- 二:散列类型hash
- 三:列表类型(list)
- 四:集合类型(set)
- 五:有序集合类型
redis 是键值对的数据库,有5中主要数据类型:
字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset)
注意:redis的命令不分大小写 可以随意
几个基本的命令
命令 | 说明 |
KEYS * | 获得当前数据库的所有键 |
EXISTS key [key …] | 判断键是否存在,返回个数,如果key有一样的也是叠加数 |
DEL key [key …] | 删除键,返回删除的个数 |
TYPE key | 获取减值的数据类型(string,hash,list,set,zset) |
FLUSHALL | 清空所有数据库 |
FLUSHDB | 清空当前数据库 |
CONFIG [get、set] | redis配置 |
select value | 切换数据库 |
expire | 设置key过期时间 |
clear | 情况当前列表 |
ttl | 查看当前key状态 |
一:字符串类型string
字符串类型是Redis的最基本类型,它可以存储任何形式的字符串。其它的四种类型都是字符串类型的不同形式。
命令 | 语法 | 说明 |
GET | GET key | 取出当前key的value |
SET | SET key value | 给当前数据库设置一个key key的值为value |
append | append key value | 在key后面追加值 java的append一模一样 redis客户端并不是输出追加后的字符串,而是输出字符串总长度 |
strlen | strlen key | 当前字符串的长度 |
incr | incr key | 给当前key(数字)自增1 默认值为0,所以首先执行命令得到 1 ,不是整型提示错误 |
decr | decr key | 给当前key(数字)自减1 |
incrby | incrby key increment | 给当前key增加指定的步长 |
decrby | decrby key increment | 给当前key减少指定的步长 |
incrbyfloat | incrbyfloat key | INCR命令类似,只不过可以递增一个双精度浮点数 |
getrange | getrange key start end | 截取该key的值 start 和 end 都是闭区间 类似于Java的substring |
setrange | setrange key start end | 替换该key的值 start 和 end 都是闭区间 类似于java的replace |
setex(set with expire) | setex key seconds value | 给一个不存在的key设置值并且设置过期时间 |
setnx(set if not exists) | setnx key value | 如果该key不存在则会创建该key 并设置值 如果存在 则创建失败 |
mset | mset key [key] | 批量设置多个key |
mget | mget key [key] | 批量获取多个值 |
set user:{key}:filed value | 设置一个对象 该对象的key为{key} 该key的filed的值为value | |
getset | getset key value | 混合使用 先get再set 如果该key不存在 则返回nil并设置该key的值 如果该key存在 先获取再覆盖该值 |
应用场景
- 粉丝量
- 浏览量
- 设置验证码过期时间
- 对象缓存储存
二:散列类型hash
命令 | 语法 | 说明 |
HSET | HSET KEY FIELD VALUE | 给key设置一个字段 这个key为一个hash field为该hash的一个键 value是这个键的值 |
HMSET | HMSET key field value [field value …] | 批量设置值 |
HGET | HGETKEY FIELD | 取出值,不存在是返回nil |
HMGET | HMGET key field [field …] | 批量取出值 |
HGETALL | HGETALL key | 返回时字段和字段值的列表 |
HEXISTS | HEXISTS key field | 存在返回1 ,不存在返回0 是否存在该field |
HSETNX | HSETNX key field value | 与hset命令不同,hsetnx是键不存在时设置值 |
HINCRBY | HINCRBY key field increment | 返回增加后的数,不是整数时会提示错误 |
HDEL | HDEL key field [field …] | 返回被删除字段的个数 |
HKEYS | HKEYS key | 返回键的所有字段名 |
HVALS | HVALS key | 返回键的所有字段值 |
HLEN | HLEN key | 返回字段总数 |
应用场景
- 对象存储
三:列表类型(list)
内部使用双向链表实现,所以获取越接近两端的元素速度越快,但通过索引访问时会比较慢
命令 | 语法 | 说明 |
LPUSH | LPUSH key value [value …] | 添加左边元素,返回添加后的列表元素的总个数 |
RPUSH | RPUSH key value [value …] | 添加右边元素,返回添加后的列表元素的总个数 |
LPOP | LPOP key | 移除左边第一个元素,返回被移除的元素值 |
RPOP | RPOP key | 移除右边第一个元素,返回被移除的元素值 |
LLEN | LLEN key | 添加左边元素,返回添加后的列表元素的总个数 |
LRANGE | LRANGE key start stop | 获取列表片段 如果start比stop靠后时返回空列表,0 -1 返回整个列表 正数时:start 开始索引值,stop结束索引值(索引从0开始)负数时:例如 lrange num -2 -1,-2表示最右边第二个,-1表示最右边第一个 |
LREM | LREM key count value | 删除指定值 count>0,从左边开始删除前count个值为value的元素 count<0,从右边开始删除前count个值为value的元 count=0,删除所有值为value的元素 |
LINDEX | LINDEX key index | 返回索引的元素值,-1表示从最右边的第一位 |
LSET | LSET key index value | 设置元素值 替换该值 |
RPOPLPUSH | RPOPLPUSH source desctination | 从source列表转移到desctination列表,该命令分两步看,首先source列表RPOP右移除,再desctination列表LPUSH |
应用场景
- 取消关注
- 消息队列
- 任务排队
四:集合类型(set)
集合类型值具有唯一性,常用操作是向集合添加、删除、判断某个值是否存在,集合内部是使用值为空的散列表实现的。
命令 | 语法 | 说明 |
SADD | SADD key member [member …] | 添加元素,向一个集合添加一个或多个元素,因为集合的唯一性,所以添加相同值时会被忽略!! 返回成功添加元素的数量 |
SREM | SREM key member [member …] | 删除元素,删除集合中一个或多个元素,返回成功删除的个数。 |
SMEMBERS | SMEMBERS key | 获取全部元素,返回集合全部元素 |
SISMEMBER | SISMEMBER key member | 值是否存在,如果存在返回1,不存在返回0 |
SDIFF | SDIFF key [key …] | 差运算 ,例如:集合A和集合B,差集表示A-B,在A里有的元素B里没有,返回差集合;多个集合(A-B)-C |
SINTER | SINTER key [key …] | 交运算,返回交集集合,每个集合都有的元素 |
SUNION | SUNION key [key …] | 并运算,返回并集集合,所有集合的元素 |
SCARD | SCARD key | 集合元素个数 |
SISMEMBER | SISMEMBER key member | 值是否存在,如果存在返回1,不存在返回0 |
SDIFFSTROE | SDIFFSTROE destination key [key …] | 差运算并存储到destination新集合中 |
SINTERSTROE | SINTERSTROE destination key [key …] | 交运算并存储到destination新集合中 |
SRANDMEMGER | SRANDMEMBER key [count] | 随机获取元素,根据count不同有不同结果,count大于元素总数时返回全部元素 count>0 ,返回集合中count不重复的元素 count<0,返回集合中count绝对值个元素,但元素可能会重复 |
SPOP | SPOP key [count] | 弹出元素,因为集合是无序的,所以spop会随机弹出一个元素 |
应用场景
- 两个好友的共同好友
- 推荐好友
- 你可能想认识的人 通过一些随机(不是盲目随机 可以根据兴趣或者爱好进行匹配)出一些用户
- 用户其实都能用set存 因为每个用户必须得不一致
五:有序集合类型
命令 | 语法 | 说明 |
ZADD | ZADD key [NX | XX] [CH] [INCR] score member [score member …] |
ZSCORE | ZSCORE key member | 获取元素分数,返回元素成员的score 分数 |
ZRANGE | ZRANGE key start top [WITHSCORES] | 元素小到大,加上withscores 返回带元素,即元素,分数 当分数一样时,按元素排序 |
ZREVRANGE | ZREVRANGE key start [WITHSCORES] | 元素大到小 与zrange区别在于zrevrange是从大到小排序 |
ZRANGEBYSCORE | ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offest count] | 返回从小到大的在min和max之间的元素,( 符号表示不包含,例如:80-100,(80 100), withscore返回带分数 limit offest count 向左偏移offest个元素,并获取前count个元素 |
ZREVRANGESCORE | ZREVRANGEBYSCORE key max min [WITHSCORE] [LIMIT offest count] | 与zrangebyscore类似,只不过该命令是从大到小排序的。 |
ZINCRBY | ZINCRBY key increment | 增加分数,注意是增加分数,返回增加后的分数;如果成员不存在,则添加一个为0的成员。 |