欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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]
//用于迭代有序集合中的元素(包括元素成员和元素分值)