大数据学习之Redis,十大数据类型的具体应用(一)

目录

3. 数据类型命令及落地应用

3.1 备注

3.2 Redis字符串(String)

单值单value

多值操作

获取指定区间范围内的值

数值增减

获取字符串长度和内容追加

分布式锁

getset(先get后set)

3.3 Redis列表(List)

简单说明

单key 多value

3.4 Redis哈希(Hash)

KV模式不变,但是V是一个键值对


3. 数据类型命令及落地应用

3.1 备注

命令不区分大小写,而key是区分大小写的

永远的帮助命令,help @类型

help @

3.2 Redis字符串(String)

单值单value
set key value

SET命令有EX、PX、NX、XX以及KEEPTTL五个可选参数

  • EX seconds:以秒为单位设置过期时间

  • Px milliseconds: 以毫为单位设置过期时间

  • EXAT timestamp:设置以秒为单位的UNIX时间戳所对应的时间为过期时间

  • PXAT milliseconds-timestamp:设置以毫秒为单位的UNIX时间戳所对应的时间为过期时间

  • NX:键不存在的时候设置键值

  • XX:键存在的时候设置键值

  • KEEPTTL:保留设置前指定键的生存时间

  • GET:返回指定键原本的值,若键不存在时返回ni1

最常用的是

set key value

keepttl

大数据学习之Redis,十大数据类型的具体应用(一)_第1张图片

大数据学习之Redis,十大数据类型的具体应用(一)_第2张图片

get key
多值操作

设置多个key value

mset k1 v1 k2 v2 k3 v3

获取多个值

mget k1 k2 k3
获取指定区间范围内的值
  • getrange/setrange

#获取全部
getrange 0 -1
set k1 abcd1234
setrange k1 1 xxyy
#输出
axxyy234
数值增减

一定是数字才能加减

  • incr key / decr key

  • incrby key / decrby key

set k1 100
get k1 #输出100
incr k1 #输出101
set k1 100
get k1 #输出100
incrby k1 3 #输出103
incrby k1 5 #输出108
set k1 100 
get k1 #输出100
decr k1 #输出99
set k1 100
get k1 #输出100
decrby k1 5 #输出95
获取字符串长度和内容追加
  • strlen key

  • append key value

set k1 abcd
get k1 #输出“abcd”
strlen k1 #输出 (integer)4
append k1 xxxx
get k1 #输出 “abcdxxxx”
分布式锁
  • setnx key value

  • setex(set with expire)键秒值/setnx(set if not exist)

    大数据学习之Redis,十大数据类型的具体应用(一)_第3张图片
getset(先get后set)

3.3 Redis列表(List)

简单说明

一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。

left、right都可以插入添加;

如果键不存在,创建新的链表:

如果键已存在,新增内容;

如果值全移除,对应的键也就消失了。

  • 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差

大数据学习之Redis,十大数据类型的具体应用(一)_第4张图片

单key 多value

微信公众号订阅的消息 一个人 订阅了多个公众号 中有多个消息

  • lpush / rpush / lrange

lpush list1 1 2 3 4 5 #输出 5
rpush list2 11 22 33 44 55 #输出 5
type list1 #输出 list
lrange list1 0 -1 #输出 5 4 3 2 1
lrange list2 0 -1 #输出 11 22 33 44 55
  • lpop / rpop

lpush list1 1 2 3 4 5 #输出 5
lrange list1 0 -1 #输出 5 4 3 2 1
lpop list1 #输出 5(从左边弹)
lrange list1 0 -1 #输出 4 3 2 1
rpop list1 #输出 1(从右边弹)
lrange list1 0 -1 #输出 4 3 2
  • lindex,按照索引下标获得元素的个数(从上到下)

lrange list1 0 -1 #输出 4 3 2
lindex list1 0 #输出 4
  • llen,获取列表中元素的个数

llen list1 #输出 3
llen list2 #输出 5
  • lrem key 数字N 给定值v1

    删除N个值等于v1的元素

    list允许有重复的元素

del list1
lpush list1 1 1 1 1 2 2 2 3 3 4 5 #输出 11
lrang list1 0 -1 #输出 5 4 3 3 2 2 2 1 1 1 1 
lrem list1 3 1
lrang list1 0 -1 #输出 5 4 3 3 2 2 2 1
  • ltrim key 开始index 结束index,截取指定范围的值后在赋值给key

lrang list1 0 -1 #输出 5 4 3 3 2 2 2 1
ltrim list1 4 7 #输出 ok
lrang list1 0 -1 #输出 2 2 2 1 
  • rpoplpush 源列表 目的列表

    移除列表的最后一个元素,并将该元素添加到另一个列表并返回

lrang list1 0 -1 #输出 2 2 2 1 
lrang list2 0 -1 #输出 11 22 33 44 55
rpoplpush list1 list2 #输出 1
lrang list1 0 -1 #输出 2 2 2
lrang list2 0 -1 #输出 1 11 22 33 44 55
  • lset key index value

lrang list1 0 -1 #输出 2 2 2
lset list1 1 mysql #输出 ok
lrang list1 0 -1 #输出 2 mysql 2
  • linsert key before / after 已有值 插入的新值

lrang list1 0 -1 #输出 2 mysql 2
linsert list1 mysql java
lrang list1 0 -1 #输出 2 java mysql 2

3.4 Redis哈希(Hash)

KV模式不变,但是V是一个键值对

Map < String , Map < Object , Object > >

  • hset / hget / hmset / hgetall / hdel

hset user:001 id 11 name zs age 25 #输出 3 
hget user:001 id #输出 11
hget user:001 name #输出 zs
hmset user:001 id 12 name ls age 26 #输出 ok
hmget user:001 id name age #输出 12 ls 26
hgetall user:001 #输出 id 12 name ls age 26
hdel user:001 age #输出 1
hgetall user:001 #输出 id 12 name ls
  • hlen

hgetall user:001 #输出 id 12 name ls
hlen user:001 #输出 2
  • hexists key 在key里面的某个值的key

hexists user:001 name #输出 1
hexists user:001 score #输出 0 
  • hkeys / hvals

hkeys user:001 #输出 id name
hvals user:001  #输出 12 ls
  • hincrby / hincrbyfloat 对数据相关的操作

hest user:001 age 25 score 99.5 #输出 2
hgetall user:001 #输出 id 12 name ls age 25 score 99.5
hincrby user:001 age 2 #输出 27
hgetall user:001 #输出 id 12 name ls age 27 score 99.5
hincrbyfloat user:001 score 0.5 #输出 100
hgetall user:001 #输出 id 12 name ls age 27 score 100
  • hsetnx

    不存在 输出1 并添加

    存在 输出0

hsetnx user:001 class 1 #输出 1 
hsetnx user:001 class 1 #输出 0

你可能感兴趣的:(redis,学习,redis,数据库)