文章目录

  • 一:字符串类型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的成员。