常用命令
- 启动redis服务(Windows)
在redis的目录下执行命令:
redis-server
- 启动redis客户端实例(Windows)
在redis的src目录下执行命令:
redis-cli
- 连接远程redis服务器:(Windows)
redis-cli -h host -p port -a password
- 设置key-value
set key value
- 获取值
get key
- 删除
del key
- 判断key是否存在
exists key
- 设置10秒过期
expire key 10
- 设置10毫秒过期
pexpire key 10
- 获取键的有效时长
ttl key
- 删除过期时间
persist key
- 切换数据库
redis有16个数据库,默认使用0号数据库,切换数据库的命令为:
select index(index表示数据库编号)
- 清空当前选中的数据库
flushdb
- 清空所有数据库
flushall
- 不同数据库之间数据是不能互通的,move移动键到指定数据库
move key n
- 查看当前数据库的所有key
keys *
- 键总数
dbsize
- 查看字段类型
type key
- 随机返回数据库中一个键
randomkey
- 重命名
rename key1 key2
- 当key2不存在时,key1重命名
renamex key1 key2
- 返回redis相关信息
info
- 退出服务器端
shutdown
- 退出客户端
quit、exit
五大数据类型
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。其通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
- 字符串类型: string
- 列表类型: list
- 集合类型: set
- 哈希类型: hash
- 有序集合类型: sortedset(zset)
String(字符串)
字符串类型是Redis最基础的数据结构,其它的几种数据结构都是在字符串类型基础上构建的,字符串的值可以是:字符串、数字、二进制,但其值最大不能超过512M。
应用场景: 缓存、计数器、对象存储缓存- set key value 设置变量
- setnx key value 仅当key不存在时进行set
- setex key time value 过期时间(expire)
- setrange key index value 从index开始替换value
- mset key1 value1 key2 value2 批量设置
- msetnx key1 value1 [key2 value2…] 批量设置键值对,仅当参数中所有的key都不存在时执行,原子性操作,一起成功,一起失败
- get key 获取变量
- getrange key 0 -1 截取字符串,0对应start,1对应end
- getset key value 设置值,返回旧值
- mget key1 key2 批量获取
- incr age 执行+1
- incrby age 10 执行+10
- decr age 执行-1
- decrby age 10 执行-10
- incrbyfloat 增减浮点数
- append key value 向指定的key的value后追加字符串
- strlen 长度
- setrange key offset value 设置指定位置的字符
- getrange key start end 获取存储在key上的值的一个子字符串
复制代码 List(列表)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),也可以获取指定范围指定下标的元素等。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
特点:
1.列表中的元素是有序的,可以通过索引下标获取某个元素霍某个某个范围内的元素列表
2.列表中的元素可以是重复的
应用场景: 消息队列、栈、文章列表等等。
常用指令:- 添加操作
- lpush/rpush key value1[value2…] 从左边/右边向列表中PUSH值(一个或者多个)
- lpushx/rpushx key value 向已存在的列名中push值(一个或者多个),list不存在 lpushx失败
- linsert key before|after pivot value 在指定列表元素的前/后 插入value
- 查找操作
- lindex key index 通过索引获取列表元素
- lrange key start end 获取list 起止元素 (索引从左往右 递增)
- llen key 查看列表长度
- 删除操作
- lpop/rpop key 从最左边/最右边移除值 并返回
- lrem key count value count >0:从头部开始搜索 然后删除指定的value 至多删除count个 count < 0:从尾部开始搜索… count = 0:删除列表中所有的指定value。
- ltrim key start end 通过下标截取指定范围内的列表
- rpoplpush source destination 将列表的尾部(右)最后一个值弹出,并返回,然后加到另一个列表的头部
- 修改操作
- lset key index value 通过索引为元素设值
- 阻塞操作
- blpop/brpop key1[key2] timout 移出并获取列表的第一个/最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
- brpoplpush source destination timeout 和rpoplpush功能相同,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
复制代码 Set(集合)
Redis的Set是string类型的无序集合,我们不能通过索引获取元素。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
应用场景: 标签
常用命令:- 集合内操作
- sadd key member1[member2…] 向集合中无序增加一个/多个成员
- srem key member1[member2…] 移除集合中一个/多个成员
- scard key 获取集合的成员数
- smembers key 返回集合中所有的成员
- sismember key member 查询member元素是否是集合的成员,若存在返回1,不存在返回0
- srandmember key [count] 随机返回集合中count个成员,count缺省值为1
- spop key [count] 随机移除并返回集合中count个成员,count缺省值为1
- 集合间操作
- sinter key1 [key2…] 返回所有集合的交集
- sinterstore destination key1[key2…] 在SINTER的基础上,存储结果到集合中。覆盖
- sunion key1 [key2…] 返回所有集合的并集
- sunionstore destination key1 [key2…] 在SUNION的基础上,存储结果到及和张。覆盖
- sdiff key1[key2…] 返回所有集合的差集 key1- key2 - …
- sdiffstore destination key1[key2…] 在SDIFF的基础上,将结果保存到集合中。覆盖
- smove source destination member 将source集合的成员member移动到destination集合
- sscan key [MATCH pattern] [COUNT count] 在大量数据环境下,使用此命令遍历集合中元素,每次遍历部分
复制代码 Hash(哈希)
几乎所有的编程语言都提供了哈希(hash)结构,Redis中 hash 是一个string类型的field和value的映射表value={{field1,value1},{field2,value2}…},可以将一个Hash表作为一个对象进行存储,表中存放对象的信息。
应用场景: 用户信息缓存
常用命令:- hset key field value 将哈希表 key 中的字段 field 的值设为 value。重复设置同一个field会覆盖,返回0
- hmset key field1 value1 [field2 value2…] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
- hsetnx key field value 只有在字段 field不存在时,设置哈希表字段的值。
- hget key field value 获取存储在哈希表中指定字段的值
- hmget key field1 [field2…] 获取所有给定字段的值
- hexists key field 查看哈希表 key 中,指定的字段是否存在。
- hdel key field1 [field2…] 删除哈希表key中一个/多个field字段
- hlen key 获取哈希表中字段的数量
- hkeys key 获取所有字段field
- hvals key 获取哈希表中所有值value
- hgetall key 获取在哈希表key 的所有字段和值
- hincrby key field n 为哈希表 key 中的指定字段的整数值加上增量n,并返回增量后结果 一样只适用于整数型字段
- hincrbyfloat key field n 为哈希表 key 中的指定字段的浮点数值加上增量 n。
- hscan key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对。
复制代码 Zset(有序集合)
在有序集合中保留了不能有重复成员的特性,但其中的成员是可以排序的,每一个元素都会关联一个double类型的分数(score)作为排序依据,score相同时按字典顺序排序。redis正是通过分数来为集合中的成员进行从小到大的排序。
应用场景: 排行榜系统等具有排名的场景
常用命令:- 集合内
- zadd key score member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
- zcard key 获取有序集合的成员数
- zscore key member 返回有序集中,成员的分数值
- zcount key min max 计算在有序集合中指定区间score的成员数
- zlexcount key min max 在有序集合中计算指定字典区间内成员数量
- zincrby key n member 有序集合中对指定成员的分数加上增量 n
- zscan key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)
- 范围查询
- zrank key member 返回有序集合中指定成员的索引
- zrevrank key member 返回有序集合中指定成员的索引,从大到小排序
- zrange key start end 通过索引区间返回有序集合成指定区间内的成员
- zrevrange key start end 通过索引区间返回有序集合成指定区间内的成员,分数从高到底
- zrangebylex key min max 通过字典区间返回有序集合的成员
- zrevrangebylex key max min 按字典顺序倒序返回有序集合的成员
- zrangebyscore key min max 返回有序集中指定分数区间内的成员 -inf 和 +inf分别表示最小最大值,只支持开区间
- zrevrangebyscore key max min 返回有序集中指定分数区间内的成员,分数从高到低排序
- 删除操作
- zrem key member1 [member2…] 移除有序集合中一个/多个成员
- zremrangebylex key min max 移除有序集合中给定的字典区间的所有成员
- zremrangebyrank key start stop 移除有序集合中给定的排名区间的所有成员
- zremrangebyscore key min max 移除有序集合中给定的分数区间的所有成员
- 集合间操作
- zinterstore destination numkeyskey1 [key2 …] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中,numkeys:表示参与运算的集合数,将score相加作为结果的score
- zunionstore destination numkeys key1 [key2…] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |