Redis[key-value]的5种数据类型:String ;set; list; hash; zset
。都是值的类型。hash是一个map类型,也有键值。hash类似于java中的Map<String, String>,但注意:redis中hash类型—map的泛型只能是String。hash特别适用于存储对象。。zset是有序的set集合,即有序,不重复,并且是key-value结构。
一. String类型
指令keys *
查看数据库中所有的键
查看数据库中是否存在某个键:指令exists <key>
查看键的类型: 指令type <key>
删除某个键:指令del <key>
为键设置过期时间:指令expire <key> <second>
; 查看还有多少秒过期:指令ttl <key>
-1 表示永不过期,-2表示已经过期。【可用于手机验证码的设置】
注意:如果已经对key设置了过期时间,又调用set修改了它,那么过期时间消失。
查看当前数据库的key的数量:指令dbsize
清空当前数据库:指令flushdb
通杀全部数据库(16个数据库都清空):指令flushall
【谨慎使用!后果自负】
数据操作,set get的用法:
在键的值末尾追加:指令append <key> <value>
获取key长度:指令strlen <key>
为键赋值,键不存在才有效,键存在无效:指令setnx <key> <value>
(setnx用来实现分布式锁)【执行成功的指令返回值是(integer 1),执行失败返回值是(integer 0)】
值是数值类型的操作(值必须是数值类型):为值增加1:指令incr ;值减1:指令decr <key>
;值增/减指定步长:指令incrby/decrby <key> <步长>
【用处:秒杀系统,库存-1。由此可见redis的适用场景,缓存数据库是存在内存中的,减少了对磁盘的io操作,速度快。Redis的单命令是原子性的,主要由于redis是单线程的。】
同时设置和获取多个键值:指令mset <key> <value> <key> <value>...
;mget <key> <key>...
同时设置一个或多个key-value对,当且仅当所有key都不存在才生效:指令msetnx <key> <value> <key> <value>...
;假设其中存在已经存在的key了,整个指令执行失败。
getrange
指令,类似于java中的substring()功能,获取值的范围:指令getrange <key> <起始位置下标> <结束位置下标>
,与substring()区别:substring():[); getrange: []
指令setrange <key> <起始位置> <value>
表示用<value>
覆盖<key>
的值,从<起始位置>开始
设置键值的同时设置过期时间:指令setex <key> <过期时间(秒)> <value>
旧值换新值:指令getset <key> <value>
[List,set使用介绍,请见下一篇博文]
[hash, zset使用介绍,请见下一篇博文]