Redis(三)-----命令

1.Redis键命令用于管理redis的键

DEL key:该命令用于在key存在时删除key

DUMP key:序列化给定key,并返回被序列化的值

EXISTS key:检查给定key是否存在

EXPIRE key seconds:为给定key设置过期时间(秒)

PEXPIRE key milliseconds:设置key的过期时间(毫秒)

TTL key:以秒为单位,返回给定key的剩余生存时间 -1代表永久有效 -2代表无效

PTTL key:以毫秒为单位,返回key的剩余的过期时间

PERSIST key:移除key的过期时间,key将持久保持

KEYS pattern:查找所有符合给定模式(pattern)的key

​ keys 通配符

​ 通配符: * 代表所有

​ ? 代表一个字符

RANDOMKEY:从当前数据库中随机访问一个key

RENAME key newkey:修改key的名称

MOVE key db:将当前数据库的key移动到给定数据库db中,当前数据库就不存在这个key了

select index:选择/切换数据库(16个)

TYPE key:返回key所储存的值的类型

2.Key的命名建议:

redis单个key的存入支持512M的大小

​ key不要太长也不要太短,尽量不要超过1024字节

​ 在一个项目中,key最好使用统一的命名格式,例如: user:xxx:name

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(排序集合)

  1. String:String是redis最基本的类型,一个key对应一个value;String类型是二进制安全的,意思是redis的String可以包含任何数据,比如序列化对象甚至图片等。

    ​ 二进制安全:指的是在传输数据时,保证二进制数据的信息安全,也就是不被篡改、破译等,如果被攻击,能够及时检测出来。

    ​ 二进制安全的特点:

    ​ ①编码、解码发生在客户端完成,执行效率高

    ​ ②不需要频繁的编解码,不会出现乱码

    String 命令

    • 赋值语法:SET KEY_NAME VALUE

      Redis SET 命令用于设置给定key的值。如果key已经存储值,SET就要覆盖旧值,且无视类型

      KEY区分大小写

    • SETNX key value //解决分布式锁的方案之一

      只有在key不存在时设置key的值。Setnx命令在指定的key不存在时,为key设置指定的值

      MSET key value [key value …] 同时设置一个或多个key-value对

    • 取值语法:GET KEY_NAME

      Redis GET命令用于获取指定key的值。如果key不存在,返回nil。如果key存储的值不是字符串类型,返回一个错误

    • GETRANGE key start end:用于获取存储在指定key中字符串的子字符串。字符串的截取范围由start和end两个偏移量决定(包括start和end在内,下标从0开始)

    • GETBIT key offset:对key所存储的字符串值,获取指定偏移量上的位(bit)

    • MGET key1 [key2…]:获取所有(一个或多个)给定的key值

    • GETSET语法:GETSET KEY_NAME VALUE:Getset命令用于设置指定key的值,并返回key的旧值,当key不存在时,返回nil

    • STRLEN key:返回key所存储的字符串值的长度

    • 删除语法:DEL KEY_Name:删除指定的KEY,如果存在,返回值数字类型

    • 自增/自减:INCR KEY_Name:incr命令将key中存储的数字值增1.如果key不存在,那么key的值会先被初始化为0,然后再执行incr操作

      自增:INCRBY KEY_Name 增量值:Incrby命令将key中存储的数字加上指定的增量值

      **自减:DECR KEY_Name 或 DECRBY KEY_Name 减值:**decr命令将key中存储的数字减1

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SRoQbptU-1570604322268)(C:\Users\xuan\AppData\Roaming\Typora\typora-user-images\1570595021349.png)]

    • 字符串拼接:APPEND KEY_NAME VALUE:append命令用于为指定的key追加至末尾,如果不存在,为其赋值

  2. 应用场景

    1、String通常用于保存单个字符串或JSON字符串数据

    2、因String是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储

    3、计数器(常规key-value缓存应用。常规计数: 微博数, 粉丝数)

    INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果。假如,在某种场景下有3个客户端同时读取了mynum的值(值为2),然后对其同时进行了加1的操作,那么,最后mynum的值一定是5。

    不少网站都利用redis的这个特性来实现业务上的统计计数需求。

    Hash命令

    1.Redis Hash 是一个String类型的field和value的映射表,其特别适合用于存储对象,Redis中的每个Hash可以存储40多亿的键值对,而且该类型的数据占用很少的磁盘空间。

    2.Hash命令

    • 赋值语法:HSET KEY FIELD VALUE //为指定的KEY,设定FIELD/VALUE 即JavaBean中的 对象/表名 属性名 属性值

      HMSET KEY FIELD VALUE [FIELD1,VALUE1…] 同时将多个field-value(域-值)对设置到哈希表key中

    • 取值语法:HGET KEY FIELD //获取存储在HASH中的值,根据FIELD得到VALUE

      HMGET key field[field1…] //获取key所有给定字段的值

      HGETALL key //返回HASH表中所有的字段和值

      HKEYS key //获取所有哈希表中的字段

      HLEN key //获取哈希表中字段的数量

    • 删除语法:HDEL KEY field1[field2…] //删除一个或多个HASH表字段

    • del key //删除对象

    • //如果所有字段被删除了,redis会自动将这个对象清掉,redis不允许没有key的对象存在

    • 其他语法:

      • HSETNX key field value:只有在字段field不存在时,设置哈希表字段的值
      • HINCRBY key field increment:为哈希表key中的指定字段的整数值加上增量increment
      • HINCRBYFLOAT key field increment:为哈希表key中的指定字段的浮点数值加上增量increment
      • HEXISTS key field:查看哈希表key中,指定的字段是否存在 存在返回1,不存在返回0

    3.应用场景

    • 常用于存储一个对象(因为用String类型存的话会造成空间浪费)

    4.总结

    • Redis提供的Hash解决了因String类型存储的空间浪费问题,Redis的Hash实际是内部存储的Value为一个HashMap,并且提供了直接存取这个Map成员的接口。

List的常用命令
lpush key v1 v2 v3 (取值和放值顺序相反)可以理解为一个栈,从左边放值
LPUSHX key value 将一个或多个值插入到已存在的列表头部
rpush key v1 v2 v3 (取值和放值顺序相同) 可以理解为一个栈,从右边 放值
RPUSHX key value 为已存在的列表添加值
lrange key start stop 从start取值到stop,如果stop为-1则全取 可以理解为一个栈,从左边取值
lpop 从左边出栈
rpop 从右边出栈
blpop key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
brpop key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
lindex key index 从左边根据索引取值
llen key 计算长度
lrem key count value 删除count个value的值
ltrim key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
rpoplpush 源列表 目的列表
lset key index value 将索引为index的值替换
linsert key before/after 值1 值2 在列表的元素前或者后插入元素

Set的常用命令
sadd key value1 value2
scard key 获取集合里面的元素个数
smembers key 查看当前key的所有value
sismember key value 判断value是否存在集合中
srem key value1 value2 删除集合中元素
srandmember key 某个整数(随机出几个数)
spop key 随机出栈
smove source destination member 将 member 元素从 source 集合移动到 destination 集合
sdiff key1 key2 差集
sinter key1 key2 交集
sunion key1 key2 并集

zset(sorted set)的常用命令
ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
zrange key start stop (得到该key从start到stop的value)
zrevrange key start stop (顺序与上条相反)
ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员
zrangebyscore key min max [withscores] 得到分数从mix到max的value
zrevrangebyscore key 结束score 开始score
ZREM key member [member …] 移除有序集合中的一个或多个成员
ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员
zcard key 统计个数
zcount key min max (统计在分数区间内的个数)
ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量
zrank key value 获得下标值
zrevrank key value (顺序与上相反)
zscore key value,获得分数
ZINCRBY key increment member 有序集合中对指定成员的分数加上增量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值