Redis 的数据类型介绍与命令操作

Redis 的数据类型介绍与命令操作

@(redis)[数据类型|redis]

1. String 类型

  1. 二进制安全的
  2. 保存序列化之后的图片等
  3. 一个键最多存储512MB
一些命令操作
1. SET: 设置key对应的值为value
  1. 语法: SET key value [EX seconds] [PX milliseconds] [NX|XX]
    • EX seconds: 设置键key的过期时间 SET key value second == SETEX
    • PX milliseconds: 以毫秒的形式设置过期时间SET key value PX milliseconds == PSETEX
    • NX: 只有键不存在的时候才可以设置成功 SET key value NX == SETXNX
    • XX: 只有key已经存在的时候才可以设置
  2. 注意: 如果key存在, 同名会产生覆盖
  3. 例子:
    - SET key1 ‘this is ad test’ PX 20000
    - SET key2 ‘this is ad test’ EX 100
    - SET key3 ‘this is ad test’ NX
    - SET key4 ‘this is ad test’ XX
    - 当然结合起来也是可以的, 但是如果EX和PX同是出现PX会覆盖NX
    - SET key5 ‘this is a value5’ EX 100 NX
2. GET: 根据key找到对应的值
  1. 语法: GET key
  2. 注意:
    1. 如果key不存在, 返回nil, 如果key不是字符串, 会报错
3.GETRANGE 获取部分值
  1. 语法 GETRANGE key 0 2 [-1 -2] [0 -5] [-4 2] [0 1000]
4.GETSET 设置指定的值, 并返回旧的值
  1. 语法: GETSET key(存在的key) value
  2. 注意: 当key不存在返回nil, 如果key不是字符串,会报错
5. MSET:
  1. 语法: MSET key value key value [key value]
6. MGET :MGET key1 key2 key3
7. STRLEN 计算字符串长度
  1. 语法:STRLEN key
  2. 注意:对于不存在的key获取其长度返回0
8. SETRANGE 相当于字符串替换的效果
  1. 语法:SETRANGE key offset value
  2. 注意:如果设置的key原来的字符串长度要比偏移量小,就会以0字节(x\00)来填充
9. GETRANGE
  1. 语法: GETRANGE key offset value
10.EXISTS 判断一个字符串是否存在
  1. 语法:EXISTS key
  2. 注意:key 存在返回1, key 不存在返回0
11.SETNX 只有key不存在才能设置成功
  1. 语法: SETNX key value
  2. 注意: 成功返回1 失败返回0
12.SETEX 设置过期时间,多少之后失效 是原子性的操作, 相当于执行了 SET key value , 又对这个key设置了过期时间 EXPIRE key seconds
  1. 语法: SETEX key seconds value
13.TTL 得到一个key的过期时间
  1. 语法: TTL key
14.EXPIRE 设置一个key的过期时间
  1. 语法: EXPIRE KEY 10
15.MSETNX: 一次设置多个key-value对, 只有所有的key都不存在的时候才会成功
  1. 语法: MSETNX key value [key value]
16.PSETEX: 以毫秒为单位设置key的生存周期

1 .语法: PSETEX key milliseconds value

17.PTTL 得到一个变量的毫秒生存级周期
  1. 语法 PTTL key
18.KEYS * 查看当前都有那些变量
  1. 语法: KEYS *
19.INCR 做加法操作(increment)
  1. 语法: INCR key
  2. 注意: key必须是个整数, 如果key不存在,那么key会被从1初始化, 如果key存储的不是数字会报错!
20.INCRBY 将key中存储的数字加上指定增量
  1. 语法: INCRBY key value
  2. 注意: value 必须是一个整数
21.INCRBYFLOAT 给key中存储的数字加上指定的浮点数
  1. 语法: INCRBYFLOAT key increment
  2. 例子: set counter 1 -> INCRBYFLOAT counter 1.2
22.DECR 将Key中存储的数字减1
  1. 语法: DECR key
23.DECRBY 将Key中存储的数字减去指定的值
  1. 语法: DECRBY key decrement
  2. 实例: DECRBY counter 5 将counter减去5
24.APPEND 向key的末尾追加值
  1. 语法: APPEND key value
  2. 注意: key存在直接加入, 如果key不存在执行SET操作

2. Hash 类型

介绍
  1. 介绍: hash 是一个散列集合, 特别适合存储对象
  2. 在配置文件中可以通过设置
    - hash-max-ziplist-entries 512 字节
    - hash-max-ziplist-value 64 字段数目
Hash 相关命令
1.HSET: 将哈希表key中域field设置成指定的value
  1. 语法: HSET userInfo1 key value
  2. 返回值:
    - 如果hash表key中field不存在, 相当于新建一个field, 设置成功返回1
    - 如果hash表key中field存在, 相当于重新赋值, 成功返回0
  3. 例子:
    - HSET userInfo1 username lisi
    - HSET userInfo1 sex 1
    - HSET userInfo1 age 25
    -
2. HGET: 获取hash表key中field字段的值
  1. 语法: HGET userInfo1 username
    2 .返回值:
    • 如果key中field不存在,返回nil
  2. 例子:
    • HGET userInfo1 username
3. HSETNX 将hash表中的field设置成指定的值, 只有在field不存在的时候才可以成功,返回1 如果field存在, 操作无效返回0
  1. 语法: HSETNX userInfo1 field value
4. HMSET 通过将多个field-value设置到hash表key中
  1. 语法: HMSET key field value [field value …..]
5. HMGET 一次获取多个hash表的field
  1. 语法: HMGET key field field…..
  2. 注意: 不存在的key会返回(nil)
6. HGETALL 返回hash表中的说有的field和value
  1. 语法: HGETALL key
7. HKEYS 返回hash表中所有的field
  1. 语法: HKEYS key
8. HVALS 返回hash表中field对应的所有的values
  1. 语法: HVALS key
9. HEXISTS 检查hash表key中某个field是否存在
  1. 语法: HEXISTS key field
10. HLEN 返回hash表key中的field的数量
  1. 语法: HLEN key
11. HINCRBY : 给hash表key中的field做增量操作
  1. 语法: HINCRBY key field increment(int)
12. HINCRBYFLOAT : 给hash表key中的field做增量浮点操作
  1. 语法: HINCRBY key field increment(float)
    - HINCRBY user1 salary 1000000.56
13. HDEL: 删除hash中key的指定域, 可以删除一个也可以删除多个
  1. 语法: HDEL key field field
  2. 注意: 2.4之前不支持同时删除多个

3. List 类型 (使用的双向链表)

介绍
  1. 链表是访问两边的元素速度比较快
  2. 适合场景,比如获取新鲜事(肯定是获取最新的新鲜事,所以查询起来就会非常的快)还有就是日志队列的应用场景等
相关命令
1. LPUSH : 向列表左端添加元素
  1. 语法:LPUSH key value value value……
  2. 注意:
    1. 在2.4之前只能一次添加一个值
    2. 后进先出
  3. 使用: LPUSH testList1 a b c 成功返回长度 每次添加的值可以重复
2. RPUSH:向列表右端添加元素
  1. 语法:RPUSH key value value value……
3. LPUSHX:只有当前列表存在的时候才执行添加(向列表头部添加元素)
  1. 语法:LPUSHX key value value value…..
  2. 注意:
    1. 如果key 不存在相当于什么都没做
    2. 如果能添加一次也只能添加一个值
  3. 使用
    1. LPUSH myList2 a
    2. LPUSHX myList2 b
    3. LRANGE myList2 0 -1
4.RPUSHX 只有当前列表存在的时候才执行添加(向列表尾部添加元素)
  1. 语法: RPUSHX key value
5. LPOP 弹出列表的头部元素
  1. 语法: LPOP key
  2. 使用: LPOP myList1
6. RPOP 弹出列表尾部的元素
  1. 语法: RPOP key
  2. 使用:RPOP myList1
7. LLEN 返回列表长度
  1. 语法: LLEN key
  2. 使用: LLEN myList1
8. LRANGE:获取列表的片段数据
  1. 语法:LRANGE key start stop
    1. start , stop 支持负数
  2. 使用:LRANGE key 0 -1
8. LREM 删除列表中指定的值
  1. 语法:LREM key cout value
    1. count值有以下几种
    2. count>0: 从列表的头开始,向尾部搜索,移出与value相等的元素,移出count个
    3. count<0: 从列表尾部向头搜索,移出与value相等的元素,移出count个
    4. count=0: 移出列表中所有与value相等的值
  2. 使用
    1. LREM myList2 2 b
    2. LREM myList2 -2 a
    3. LREM myList2 0 e
9. LINDEX 获取指定索引元素的值
  1. 语法: LINDEX key index
10. LSET 设置指定索引元素的值
  1. 语法: LSET key index value
11. LTRIM: 只保留列表的片段
  1. 语法: LTRIM key start stop
  2. 使用:
    1. LTRIM myList1 0 1
    2. LTRIM myList1 10000 2000 列表被清空
    3. LTRIM myList1 20000 1000 列表被清空
11. LINSERT 向列表插入元素
  1. 语法: LINSERT key BEFORE|AFTER pivot value
  2. 使用:
    1. LPUSH list a b c d e
    2. LINSERT list BEFORE ‘b’ ‘king’
    3. LINSERT list BEFORE ‘bb’ ‘king’ 错误
12. RPOPLPUSH 将元素从一个列表转到另一个列表
  1. 语法: RPOPLPUSH source destination
  2. 使用:
    1. LPUSH list1 1 2 3
    2. LPUSH list2 4 5 6
    3. RPOPLPUSH list1 list2
13. BLPOP 是LPOP的阻塞版本
  1. 语法:
  2. 使用:
14. RPOPLPUSH
  1. 语法:
  2. 使用:

4. Set 集合类型

介绍
  1. 通过hash表实现
  2. 只能包含2^32-1个元素
  3. 实现交集,并集,差集
  4. 通过hash表实现
相关命令
1. SADD : 向集合中添加元素
  1. 语法:SADD key value [value1,value2……]
  2. 注意:
    1. 不可以添加重复元素
    2.
  3. 使用: LPUSH testList1 a b c 成功返回长度 每次添加的值可以重复
2. SMEMBERS 返回指定集合中的元素
  1. 语法: SMEMBERS key
  2. 注意: key不存在返回空
3. SISMEMBER 检查value是否是集合中的元素
  1. 语法: SISMEMBER key value
  2. 注意: key不存在返回空
4. SREM 删除集合中指定的元素
  1. 语法: SREM key value []value1 value2….]
  2. 注意: key不存在返回0
5. SPOP 删除并返回集合中的随机元素
  1. 语法: SPOP key
  2. 注意: key不存在返回空
6. SRANDOMEMBER 随机的返回n个元素
  1. 语法: SRANDMEMBER key count
  2. 注意:
    1. count 为正数, 而且小于集合中的元素,返回一个包含随机元素的集合数组,count数大于集合中元素的个数,这时候返回整个集合
    2. count为负数,返回一个数组,数组中的成员可能出现重复,数组的长度是count的绝对值
    3. 只返回不删除
  3. 使用:
    1. SRANDOMEMBER s1 返回1个
    2. SRANDOMEMBER s1 2 返回2个
    3. SRANDOMEMBER s1 50 如果s1的长度大于50,返回所有的元素
    4. SRANDOMEMBER s1 -2 返回两个
    5. SRANDOMEMBER s1 -10000 返回10000个会有重复值
7. SDIFF 返回集合间的差集
  1. 语法: SDIFF s1 s2 s3 s4 ……. sn
  2. 注意: key不存在返回空
8. SINTER 返回集合间的交集
  1. 语法: SINTER key key key
9. SUNION 返回集合间的并集
  1. 语法: SUNION key key key
10. SCARD 返回集合中元素个数
  1. 语法: SCARD key
11. SDIFFSTORE 返回集合间的差集,并将结果保存到指定集合中
  1. 语法: SDIFFSTORE destination(目标集合【可以是本身】) key key key
12. SINTERSTORE 返回集合间的交集,并将结果保存到指定集合中
  1. 语法: SINTERSTORE destination(目标集合【可以是本身】) key key key
13. SUNIONSTORE 返回集合间的并集,并将结果保存到指定集合中
  1. 语法: SUNIONSTORE destination(目标集合【可以是本身】) key key key
14. SMOVE 将集合中元素移动到另外一个集合中
  1. 语法: SMOVE source(原集合) destination(目标集合【可以是本身】) member
  2. 注意: 原子操作

5. Zset 有序集合类型 (排序后的集合)

1. ZADD 将元素及分数添加到集合中
  1. 语法: ZADD key score member [ score member ]
2. ZSCORE 将集合中元素的值
  1. 语法: SMOVE source(原集合) destination(目标集合【可以是本身】) member
  2. 注意: 原子操作
3. SMOVE 将集合中元素移动到另外一个集合中
  1. 语法: SMOVE source(原集合) destination(目标集合【可以是本身】) member
  2. 注意: 原子操作
4. SMOVE 将集合中元素移动到另外一个集合中
  1. 语法: SMOVE source(原集合) destination(目标集合【可以是本身】) member
  2. 注意: 原子操作
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值