redis map 过期时间_redis 五大数据类型及常用命令

0408c034ae608c9ea25a12d27a11361f.png

一、redis 数据类型

1、redis 五大数据类型

1️⃣ String(字符串)

String 类型是 redis 最基本的数据类型。string 类型是二进制安全的,意思是 redis 的 string 可以包含任何数据,比如 Jpg 图片或者序列号对象。一个 redis 中字符串 value 最多可以是 512 M

2️⃣ Hash(哈希,类似 java 里面的 map)

Redis hash 是一个键值对集合,是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象

3️⃣ List(列表)

redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或尾部(右边)它的底层实际是个链表

4️⃣ Set(集合)

redis 的 set 是 string 类型的无序集合

5️⃣ Zset(sorted set 有序的集合)

redis zset 和 set 一样也是 string 类型元素的集合,且里面元素不允许重复。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。zset 的成员是唯一的,但分数却可以重复。

2、redis 命令文档

http://redisdoc.com/

3、redis 键(key)

1、keys *    查看当前库中所有的 key
2、exists keyname     判断某个 key 是否存在
3、move keyname dbnum      把当前库中的 keyname 这个 key 移动到 dbnum 这个库里面
4、expire keyname 秒钟      为给定的 key 设置过期时间
5、ttl keyname         查看还有多少秒过期,-1 表示永不过期    -2 表示已过期
6、type keyname         查看你的 key 是什么类型

4、redis 字符串(String)

set k1 v1      设置 key 为 k1 值为 v1
get k1        获取 k1 的值
del k1        删除 k1
append k1 abc       在 k1 的值后面追加 abc(得到的结果就是 v1abc)
strlen k1          返回 k1 值的长度
incr k1           假设 k1 的值是 2,那么你执行这个命令就会把 k1 的值递增 1,再执行一次再递增 1
decr k1            执行这个命令会把 k1 的值递减 1
incrby k1 3         执行这个命令会把 k1 的值递增 3,执行一次递增 3
decrby k1 3         执行这个命令会把 k1 的值递减 3,执行一次递减 3
getrange k1 0 3      范围内取值,假设我现在 k1 的值为 14abc,执行命令后的结果就是 14ab
setrange k1 1 mm     范围内设值,假设我现在 k1 的值为 14abc,执行命令后的结果就是 1mmbc
setex k4 10 v4       设置 k4 的值为 v4并且过期时间为 10 秒
mset k1 v1 k2 v2      同时设置多个key 和 value ,体现到 java 代码中就是你直接把 map 的key-value往redis 塞就可以了
mget k1 k2           同时获取多个 value 值

5、redis 列表(List)

lpush list01 1 2 3 4 5       设置 key 为 list01 value 为一个集合,值为 1 2 3 4 5
lrange list01 0 -1           返回 list01 中所有的值,结果为 5 4 3 2 1
rpush list02 1 2 3 4 5         设置 key 为 list01 value 为一个集合,值为 1 2 3 4 5
lrange list02 0 -1           返回 list02 中所有的值,结果为 1 2 3 4 5

lpush 和 rpush 区别:

lpush 设置一个集合,使用 lrange 返回集合中的元素是逆序输出的
rpush 设置一个集合,使用 lrange 返回集合中的元素是顺序输出,怎么设置怎么出来
现在假设我已经执行了两条命令:
lpush list01 1 2 3 4 5 
rpush list02 1 2 3 4 5 

其次 pop 是出栈的命令,lpop 表示从左边出栈,rpop 表示从右边出栈(一次只出栈一个)
lpop list01   结果是 5 出去了(因为你 lrange list01 0 -1 结果 5 是在栈顶所以先出去的是 5)
lpop list02   结果是 1 出去了(因为你 lrange list02 0 -1 结果 1 是在栈顶所以先出去的是 1)
rpop list01   结果是 1 出去了(从右边出栈,所以栈底的先出去)
rpop list02   结果是 5 出去了(从右边出栈,所以栈底的先出去)

lindex list01 3  按照索引下标获得元素(这个就是获取 key 为 list01 的 value 值中下标为 3 的元素)
llen list01      返回 list01 中元素的个数

假设我现在先执行了命令:
rpush list01 1 2 3 3 4 4 4 4 5 5
lrem list01 3 4     删除 key 为 list01 的 value 值,具体是删除 3 个 4

假设我先执行了命令:
lpush list01 1 2 3 4 5 6
ltrim list01 1 3      截取指定范围的 key 再赋值给 key(这里就是截取 list01 的 value 值,从下标 1 开始截取,到下标 3 结束,然后再把截取的结果赋值给 list01)所以结果为 5 4 3

假设我先执行了命令:
lpush list01 1 2 3 4
lpush list02 5 6 7 8
lrange list01 0 -1      结果就是 4 3 2 1
lrange list02 0 -1      结果就是 8 7 6 5
其次要知道 pop 是出栈,push 是进栈
 RPOPLPUSH lis01 list02     意思就是 list01 从右边出栈一个,进栈到 list02 中
 lrange list02 0 -1     结果就是 1 8 7 6 5
 
 『lset key index value命令』:
 假设执行命令:
 lrange list01 0 -1    结果是  4 3 2 1
lset list01 2 x     这个就是把下边为 2 的 value 值设置为了 x
lrange list01 0 -1     结果是 4 3 x 1

 『linsert key before/after value1 value2 命令』:
 假设执行命令:
 lrange list01 0 -1    结果是  4 3 2 1
 linsert list01 before 3 linux   意思就是往 key 为 list01 的集合中插入值,在 value 值为 3 之前插入一个值是 linux
  lrange list01 0 -1    结果是 4 linux 3 2 1
  linsert list01 after 2 windows   意思就是往 key 为 list01 的集合中插入值,在 value 值为 2 之后插入一个值是 windows
lrange list01 0 -1    结果是 4 linux 3 2 windows 1

关于 List 总结:

1、它是一个字符串链表,left 和 right 都可以插入、添加
2、如果键不存在,创建新的链表
3、如果键已存在,新增内容
4、如果值全移除,对应的键也就消失了
5、链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了

6、redis 集合(Set)

sadd set01 1 1 2 2 3 3     往 set 集合里面插入数据,key 是 set01 ,因为 set 里面不允许重复所以你插入重复的数据,会被覆盖掉。所以 value 就是 1 2 3 三个值
smembers set01         返回 key 为 set01 集合的 value 值(结果是 1 2 3)
sismember set01 2      返回 key 为 set01 的集合中是否包含元素 2,包含返回 1 ,不包含返回 0
scard set01            获取集合中元素的个数
--------------------------------------------------------
『srem key value』 命令     删除集合中的元素
srem set01 2           这个就是把 set01 集合中的元素 2 给删除
smembers set01       结果就是 1 和 3 ,元素 2 已经被删除了
----------------------------------------------------------
『srandmember key 整数』命令     随机返回几个整数
sadd list02 1 2 3 4 5 6
srandmember list02 3        这样就会从集合 list02 中随机返回 3 个整数
----------------------------------------------------------------
『spop key』 命令        随机出栈集合中的元素
spop set02          会把 set02 中的元素随机出栈一个
-----------------------------------------------------------------
『smove key1 key2 key1里面的某个元素』命令      把 key1 中某个元素移动到 key2 中
sadd set01 1 2 3 4 5
sadd set02 x y z 
smove set01 set02 3        这样就把 set01 中的元素 3 移动到了 set02 中
smembers set02          结果就是 y 3 x z
-------------------------------------------------------------------
『sdiff key1 key2』命令      两个集合取差集,结果是返回第一个集合中有的元素,而第二个集合中没有的元素
sadd set01 1 2 3 4 5
sadd set01 1 2 3 a b
sdiff set01 set02        结果就是 4 5
『sinter key1 key2』命令     两个集合取交集
sinter set01 set02          结果是 1 2 3
『sunion key1 key2』命令     两个集合取并集
sunion set01 set02          结果是 1 2 3 4 5 a b

7、redis 哈希(Hash)

关于哈希可以概括为:KV 模式不变,但 V 是一个键值对

hset user id 1         这里的 key 是 user 但是 value 又是一个键值对(key 为 id,value 是 1)
hset user name xy
hget user id            返回 1
hget user name          返回 xy
------------------------------------
hmset customer id 1 name zs age 18          可以一次性设置多个 key 和 value
hmget customer id name age           结果就是 1 zs 18
hgetall customer       一次性获取所有,返回 id 1 name zs age 18
-------------------------------------------------------------
hdel customer name    把 name 这个 key 给删除
hgetall customer       返回 id 1 age 18
-----------------------------------------------------------
hlen customer        查询 key 是 customer 这个哈希的 value 值中 key 的个数(结果是 2)
---------------------------------------------------------------
hexists customer id      判断 key 是 customer 这个哈希的 value 值中是否存在 key 是 id 的,返回 1 表示存在,0 表示不存在
--------------------------------------------------------------
 hkeys customer    查看 key 是 customer 这个哈希的 value 值中所有的 key (结果是 id age)
hvals customer     查看 key 是 customer 这个哈希的 value 值中所有的 value (结果是 1 18)
----------------------------------------------------------------------------------
hincrby customer age 2     key 是 customer 这个哈希的 value 值中 key 为 age 的 value 值递增 2
hset customer score 2.5
hincrbyfloat customer score 0.5 key 是 customer 这个哈希的 value 值中 key 为 age 的 value 值递增 0.5  (结果就是 3)

8、redis 有序集合 Zset(sorted set)

Zset 其实就是在 set 基础上加了一个 score 值。之前 set 是 k1 v1 v2 v3 ,那么现在 zset 是 k1 score1 v1 score2 v2,相当于它的 value 值又是一个 k-v 键值对

zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5     向 zset 中插入数据,key 是 zset01 value 值又是一个 k-v 键值对,其中 key 是 score 值
zrange zset01 0 -1    显示 zset 中的元素(结果为 v1 v2 v3 v4 v5)
zrange zset01 0 -1 withscores  显示 zset 中的元素,连同 score 一起显示出来(结果为v1 70 v2 80 v3 90 v4 100 v5)
------------------------------------------------------------------------
『zrangebyscore key 开始score 结束score』命令
zrangebyscore zset01 60 80        返回 score 值在 60 到 80 之间的(结果就是 v1 v2 v3)
zrangebyscore zset01 (60 (80      "("  表示不包含(结果是 v2)
zrangebyscore zset01 60 90 limit 2 2   在返回结果上进行筛选,从下标为 2 的元素开始取,取 2 个(结果是 v3 v4)
-------------------------------------------------------
zrem zset01 v5   删除元素
--------------------------------------------
zcard zset01    返回元素个数,返回 4(因为上面删除了一个)
---------------------------------------------------
zcount zset01 60 80      统计 key 为 zset01 score 值在 60-80之间的个数(结果返回 3)

https://weixin.qq.com/f/EKnr2hIaaUIKpaKMEwpeMjk (二维码自动识别)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值