Redis 5种数据类型学习笔记!
程序员文章站
2022-07-05 10:19:00
...
redis 有5种数据格式!
redis有16个数据库(0-15)!
切换数据库:select 15(切换第15个数据库)
清空数据库:flushall
set key : 1 values ( : 表示作用域 )
//输入ping 返回 pong
1.string类型:
个人理解:就是简单的key->value
SET key value
设置指定 key 的值
set name lucy //ok
GET key
获取指定 key 的值
get name //lucy
GETRANGE key start end
返回 key 中字符串值的子字符
getrange name 0 2 //luc
GETSET key value
//获取 key 的旧值返回,设置key 的新值 value
//key 若不存在返回nil
set name lucy //ok
getset name lily //lucy
MSET key1 val1 key2 val 2 ...
同时设置一个或多个 key-value 对。
mset name lucy age 18 class 3 //ok
MGET key1 [key2..]
获取所有(一个或多个)给定 key 的值。
mget name age class //lucy 18 3
SETEX key seconds value
为 key 赋值 value ,并设置过期时间(以秒为单位)
PSETEX key milliseconds value
这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间
setex name 60 lucy
//为name 赋值lucy,过期时间60s,
//可以用ttl name 查看剩余过期时间
psetex name 600 lucy
SETNX key value
只有在 key 不存在时设置 key 的值。
set name lucy
setnx name lily //(integer) 0 失败
set names lily //(integer) 1 成功
STRLEN key
返回 key 所储存的字符串值的长度。
strlen name //(integer) 4
SUBSTR key start end
截取 key 从 start 开始 截取 到 end
substr name 0 1 // lu
MSETNX key value [key value ...]
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
msetnx key1 val1 key2 val2
INCR key
将 key 中储存的数字值增一
set n 10
incr n //11
INCRBY key increment
将 key 所储存的值加上给定的增量值(increment)
set n 10
incrby n 2 //12
DECR key
将 key 中储存的数字值减一。
set n 10
decr n // 9
DECRBY key decrement
key 所储存的值减去给定的减量值(decrement) 。
set n 10
decrby n 2 //8
APPEND key value
APPEND 命令将 value 追加到字符串 key 原值末尾
append name hello //name 不存在返回 hello
set name lucy
append name hello // lucyhello
del key
删除key //del 成功 (integer) 1 ,失败(integer) 0
del name
符合给定模式的 key 列表 (Array)
keys abc* //获取 以abc 开头的 key
keys *abc //获取 以abc 结尾的 key
keys * //获取该数据库所有 key
//如果为空 返回(empy list or set)
判断key 是否存在
exists key // 成功 (integer) 1 ,失败(integer) 0
exists name
判断key 类型
type key // 返回 类型
type name
修改 key 名称
rename key k //成功返回ok
rename name title
randomkey
随机返回一个key
randomkey
创建一个 key 并赋值:set key val
为 key 设置过期时间:expire key 60(秒)
查看剩余过期时间:ttl key
过期后 再 get key 则 返回 (nil)
2.list类型:
个人理解:一个双向队列,要么头进尾出,要么尾进头出。
lpush list string
//在list 头部压入字符串元素
rpush list string
//在list 尾部压入字符串元素
// 当 key 存在但不是列表类型时,返回一个错误。
llen list
// 返回 list 长度,不存在返回0
lrange list start end
//返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。
//其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。
//你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
lrange list 0 -1 //取list全部
lrem list count string
//从list 头部开始 删除 count 个 string
lpop list
//弹出最头部 的元素,删除
rpop list
//弹出最尾部 的元素,删除
3.hash类型:
个人理解: hash 类似mysql的一行记录,一行记录中, table有多个field,每个field对应一个value;
hset table field1 value1
//设置 field1 值 为 value1
//成功 返回 (integer) 1 ,失败 返回(integer) 0
//如果field1 已存在 ,则替换 ,但返回 (integer) 0
hget table filed1
//获取 field1
hgetall table
//获取table所有field
hdel table field1
//删除 filed1
//成功 返回 (integer) 1 ,失败 返回(integer) 0
hexists table field1
//field1 是否存在
//成功 返回 (integer) 1 ,失败 返回(integer) 0
hincrby table field n
//给 field 自增长 n(可以为负数)
hkeys table
//获取 table 所有 field
hlen table
//哈希表中字段的数量。 当 key 不存在时,返回 0 。
hmset table field1 value1 field2 value2 field3 value3 ...
//批量设置
hmget table field1 field2 field3 field4 ...
//批量获取
hsetnx table field value
//为field 设置 value ,如果 field已存在,则 失败,返回 (integer) 0
4.set类型:
sadd set value1 value2 value3 ...
//将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
//假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。
//当集合 key 不是集合类型时,返回一个错误。
//集合元素不能重复,否则添加失败
scard set
//集合的数量。 当集合 key 不存在时,返回 0 。
smembers set
//查看 set 所有元素
sdiff set1 set2 setn...
//在set1 集合里,但不在set2 集合里。求差集,不存在的集合 key 将视为空集。
sdiffstore set set1 set2 setn...
//在set1 集合里,但不在set2 集合里。差集存储set 集合
sinter set1 set2 setn...
//求交集, 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
sinterstore set set1 set2 setn...
//求set1,set2 ,setn的交集。交集存储set 集合
sunion set1 set2 setn...
//求set1 ,set2 ,setn的并集
sunionstore set set1 set2 setn...
//求set1,set2 ,setn的并集。交集存储set 并集
sismember set value
//判断 value 是否是 set 集合的元素,是返回 1,否 返回 0
smove set1 set2 value
//把set1集合的value 移到 set2 集合。smove是原子性操作,成功返回 1,失败返回 0
spop set
//移除并返回set 集合中的一个随机元素。
srandmember set
//随机返回set 集合中的一个元素
srem set value1 value2 valuen
//从集合 set 中 移除 value元素,可以移除多个,返回移除成功的个数。
ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN
// 命令用于将一个或多个成员元素及其分数值加入到有序集当中。
//如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
//分数值可以是整数值或双精度浮点数。
//如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
//当 key 存在但不是有序集类型时,返回一个错误。
ZCARD KEY_NAME
//用于计算集合中元素的数量。
ZCOUNT key min max
//用于计算有序集合中指定分数区间的成员数量。
ZINCRBY key increment member
//对有序集合中指定成员的分数加上增量 increment
//可以通过传递一个负数值 increment ,让分数减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。
//当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
//当 key 不是有序集类型时,返回一个错误。
//分数值可以是整数值或双精度浮点数。
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
//计算给定的一个或多个有序集的交集,中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
//默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。
ZLEXCOUNT KEY MIN MAX
//在计算有序集合中指定字典区间内成员数量。
ZRANGE key start stop [WITHSCORES]
//返回有序集中,指定区间内的成员。
//其中成员的位置按分数值递增(从小到大)来排序。
//具有相同分数值的成员按字典序(lexicographical order )来排列。
//如果你需要成员按值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
//下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
//你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
ZRANK key member
//返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。
ZRANK key member
//用于移除有序集中的一个或多个成员,不存在的成员将被忽略。
//当 key 存在但不是有序集类型时,返回一个错误。
ZSCORE key member
//返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
ZSCORE key member
//返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
ZSCAN key cursor [MATCH pattern] [COUNT count]
//用于迭代有序集合中的元素(包括元素成员和元素分值)