redis 5中数据类型.详细用法.

以下是本人,详细操作:

东西比较多.所以写一点,保存一些.见谅

  1. string类型

  • set/get 最常见也是最简单的操作.key value 键值对;
    192.168.159.130:7000> set num 1
    OK
    192.168.159.130:7000> get num
    "1"
    192.168.159.130:7000> get age
    (nil)

  • setnx 同set 区别在于 如果key值存在,不覆盖返回0, 如果key值不存在,设置值.并且返回1(nx not exist)
    192.168.159.130:7000> setnx num 1
    (integer) 0
    192.168.159.130:7000> get num 
    "1"
    192.168.159.130:7000> setnx age 1
    (integer) 1
    192.168.159.130:7000> get age
    "1"
    

  • setex 同set 区别在于可以给数据加一个失效时间. set key 时间  value
    192.168.159.130:7000> setex num 5 1
    OK
    192.168.159.130:7000> get num
    "1"
    192.168.159.130:7000> get num
    "1"
    192.168.159.130:7000> get num
    (nil)
    

  • setrange 同set  可以替换value值   setrange key  要替换的开始索引  替换的值   替换的长度取决于替换值的长度.长度不够,原值补充
    192.168.159.130:7001> set name helloworld
    OK
    192.168.159.130:7001> SETRANGE name 1 t
    (integer) 10
    192.168.159.130:7001> get name
    "htlloworld"
    192.168.159.130:7001> setrange name 0 helloworld
    (integer) 10
    192.168.159.130:7001> get name
    "helloworld"
    

  • mset 同set 一次设置多个值(特点要么全部成功,要不全部失败)  set key1 value1 key2 value2 ... 这里不做演示(因为我的环境是redis集群,设置多个值的时候,redis有可能会报CROSSSLOT Keys in request don't hash to the same slot 异常.原因请看下一篇关于redis的文章)
  • getset 同set 只不过会返回key的原值  没有返回nil
    192.168.159.130:7000> getset age 1
    "2"
    192.168.159.130:7000> getset age 2
    "1"
    192.168.159.130:7000> getset take 2
    (nil)
    192.168.159.130:7000> getset take 1
    "2"
    

  • getrange 获取值的一部分 getrange key 开始索引 结束索引
    192.168.159.130:7001> GETRANGE name 0
    (error) ERR wrong number of arguments for 'getrange' command
    192.168.159.130:7001> GETRANGE name 0 4
    "hello"
    192.168.159.130:7001> GETRANGE name 0 18
    "helloworld"

  • mget 同 get 特点是一次后去多个 key 锁对应的值. mget key1 key2 ... 这里不做演示.原因同mset
  • incr 增加对应key 的value值  incr key  返回增加后的value值
    192.168.159.130:7001> get name
    "helloworld"
    192.168.159.130:7001> INCR name
    (error) ERR value is not an integer or out of range
    192.168.159.130:7001> set name 1
    OK
    192.168.159.130:7001> INCR name 
    (integer) 2
    

  • incrby 同incr 特点是可以根据你给定的值 增加key对应的value值.如果key值不存在直接设置key值(incr 也相同)
    192.168.159.130:7003> get student
    (nil)
    192.168.159.130:7001> INCRBY student 10
    (integer) 10
    192.168.159.130:7001> get student 
    "10"
    192.168.159.130:7001> INCRBY student 2
    (integer) 12
    

  • decr 和decrby 这里不做介绍.同incr
  • append 相当于java中的 stringbuffer 里的append方法 .向后追加字符串
    192.168.159.130:7001> set name aa
    OK
    192.168.159.130:7001> get name
    "aa"
    192.168.159.130:7001> APPEND name bb
    (integer) 4
    192.168.159.130:7001> get name 
    "aabb"

  • strlen  获取对象key的value值长度
    192.168.159.130:7001> get name 
    "aabb"
    192.168.159.130:7001> strlen name
    (integer) 4
    192.168.159.130:7001> set name 1
    OK
    192.168.159.130:7001> STRLEN name
    (integer) 

    2.HASH字典类型

  • hset  key field value(设置或者新增对象的一个属性),hget key field (获取对象的单个属性值),hsetnx(同string类型的setnx 设置属性值 如果有值则不执行)
    192.168.159.130:7000> hset person age 10
    (integer) 1
    192.168.159.130:7000> hget person age
    "10"
    192.168.159.130:7000> hsetnx person age 5
    (integer) 0
    192.168.159.130:7000> hsetnx person sex 1
    (integer) 1
    192.168.159.130:7000> hget person sex
    "1"
    

  • hmset key field1 value1 field2 value2...(批量设置对象属性),hmget key field1 field2..(批量获取对象属性值),hgetall key(获取对象所有的属性以及属性值)
    192.168.159.130:7001> hmset person name xiaoming age 5 sex 1
    OK
    192.168.159.130:7000> hmget person name age sex
    1) "xiaoming"
    2) "5"
    3) "1"
    192.168.159.130:7000> hgetall person
    1) "name"
    2) "xiaoming"
    3) "age"
    4) "5"
    5) "sex"
    6) "1"
    

  • hexists key field(判断是否属性是否存在),hlen key(返回对象属性条数),hdel key field( 删除指定属性),hkeys key (返回对象所有属性名),hvals key(返回对象所有属性值)
    192.168.159.130:7000> HINCRBY person sex 1
    (integer) 2
    192.168.159.130:7000> HEXISTS person hobby
    (integer) 0
    192.168.159.130:7000> hlen person
    (integer) 3
    192.168.159.130:7000> hkeys
    (error) ERR wrong number of arguments for 'hkeys' command
    192.168.159.130:7000> hkeys person
    1) "name"
    2) "age"
    3) "sex"
    192.168.159.130:7000> hvals person
    1) "xiaoming"
    2) "5"
    3) "2"
    192.168.159.130:7000> hdel person sex
    (integer) 1
    192.168.159.130:7000> hget person sex
    (nil)

     3.LIST 队列数据类型

  •  lpush  key  value1 value2 ...(从头部依次插入数据),rpush key value1,value2..(从尾部依次插入数据),lrange key 开始索引 结束索引 (查询指定索引范围内的元素  0 -1标示全部)
192.168.159.130:7000> LPUSH mylist a
-> Redirected to slot [5282] located at 192.168.159.130:7001
(integer) 1
192.168.159.130:7001> lpush mylist b
(integer) 2
192.168.159.130:7001> LRANGE 0 -1
(error) ERR wrong number of arguments for 'lrange' command
192.168.159.130:7001> LRANGE mylist 0 -1
1) "b"
2) "a"
192.168.159.130:7001> rpush mylist c
(integer) 3
192.168.159.130:7001> lrange mylist 0 -1
1) "b"
2) "a"
3) "c"
  • linsert key  value before/after 待插入值 (在指定值的前后插入值)
    192.168.159.130:7001> lrange mylist 0 -1
    1) "b"
    2) "a"
    3) "c"
    192.168.159.130:7001> linsert mylist before a d
    (integer) 4
    192.168.159.130:7001> lrange mylist 0 -1
    1) "b"
    2) "d"
    3) "a"
    4) "c"
    192.168.159.130:7001> linsert mylist after a e
    (integer) 5
    192.168.159.130:7001> lrange mylist 0 -1
    1) "b"
    2) "d"
    3) "a"
    4) "e"
    5) "c"
    
  • lset key 位置  value(替换自定位子的值)
    192.168.159.130:7000> lset mylist 1 f
    OK
    192.168.159.130:7001> lrange mylist 0 -1
    1) "b"
    2) "f"
    3) "a"
    4) "e"
    5) "c"

  • lrem  key  个数  value(删除队列中值为value的元素,个数为正数从头开始删除,个数为负数从尾部开始删除,个数为0全部删除
    192.168.159.130:7001> lrange mylist 0 -1
     1) "b"
     2) "a"
     3) "b"
     4) "a"
     5) "a"
     6) "b"
     7) "f"
     8) "a"
     9) "e"
    10) "c"
    192.168.159.130:7001> lrem mylist 1 a
    (integer) 1
    192.168.159.130:7001> lrange mylist 0 -1
    1) "b"
    2) "b"
    3) "a"
    4) "a"
    5) "b"
    6) "f"
    7) "a"
    8) "e"
    9) "c"
    192.168.159.130:7001> lrem mylist -1 a
    (integer) 1
    192.168.159.130:7001> lrange mylist 0 -1
    1) "b"
    2) "b"
    3) "a"
    4) "a"
    5) "b"
    6) "f"
    7) "e"
    8) "c"
    192.168.159.130:7001> lrem mylist 0 b
    (integer) 3
    192.168.159.130:7001> lrange mylist 0 -1
    1) "a"
    2) "a"
    3) "f"
    4) "e"
    5) "c"
    
  • ltrim 保留指定范围内数据  成功返回ok

192.168.159.130:7001> lrange mylist 0 -1
1) "a"
2) "a"
3) "f"
4) "e"
5) "c"
192.168.159.130:7001> ltim mylist 1 2
(error) ERR unknown command 'ltim'
192.168.159.130:7001> ltrim mylist 1 2
OK
192.168.159.130:7001> lrange mylist 0 -1
1) "a"
2) "f"

  • llen 返回list个数

192.168.159.130:7001> ltrim mylist 3 7
OK
192.168.159.130:7001> lrange mylist 0 -1
(empty list or set)
192.168.159.130:7001> llen mylist
(integer) 0

  • lpop 和rpop  前者是从头部弹出一个数据  后者是从尾部弹出一个数据
192.168.159.130:7001> lpop mylist
(nil)
192.168.159.130:7001> lpush mylist a
(integer) 1
192.168.159.130:7001> lpush mylist b
(integer) 2
192.168.159.130:7001> lrange mylist 0 -1
1) "b"
2) "a"
192.168.159.130:7001> rpop mylist
"a"
  • lindex (返回指定索引的数据) rpoplpush(弹出前一个list尾部数据 压入后一个list头部,这个方法如果集群也不适合)
192.168.159.130:7001> lindex mylist 1
(nil)
192.168.159.130:7001> lindex mylist 0
"b"
4 .set数据类型  是string类型的无序集合  是通过hashtable实现的,可以进行并集,交集,差集.
  • sadd 新增元素  smembers 显示所有元素
192.168.159.130:7003> sadd myset a
-> Redirected to slot [560] located at 192.168.159.130:7000
(integer) 1
192.168.159.130:7000> smembers myset
1) "a"
  • srem 删除 spop 随机弹出一个元素
192.168.159.130:7000> sadd myset c d e f g
(integer) 5
192.168.159.130:7000> smembers myset
1) "c"
2) "g"
3) "a"
4) "d"
5) "e"
6) "b"
7) "f"
192.168.159.130:7000> srem myset a
(integer) 1
192.168.159.130:7000> smembers myset
1) "g"
2) "d"
3) "e"
4) "c"
5) "b"
6) "f"
192.168.159.130:7000> spop myset
"d"
  • sdiff 差集 sinter交集 sunion 并集 sinterstore 取交集并存储到另一个集合中 sunion 取并集并储存到另一个集合中
这里因为我用的是集群式redis 对上述命令不支持.所以不进行演示. 并集交集 用的很少缺很经典 比如 qq共同好友 好友迁移之类
  • smove (移动一个集合的元素到另一个集合) scard(返回集合元素数量)
192.168.159.130:7002> SMOVE myset myset1 *
(error) CROSSSLOT Keys in request don't hash to the same slot
192.168.159.130:7002> SMOVE myset myset1 a
(error) CROSSSLOT Keys in request don't hash to the same slot
192.168.159.130:7002> scard myset
-> Redirected to slot [560] located at 192.168.159.130:7000
(integer) 5
192.168.159.130:7000> 
  • sismember 判断集合中是否有这个元素 srandmember 随机返回集合中的一个元素
192.168.159.130:7000> sismember myset a
(integer) 0
192.168.159.130:7000> sismember myset b
(integer) 1
192.168.159.130:7000> srandmember myset 
"b"
192.168.159.130:7000> srandmember myset 
"f"
5 .zset类型,是在set类型上的升级.增加了顺序score
  • zadd 添加元素 zrange 显示元素 (withscore带分数)
192.168.159.130:7000> zadd myzset a
(error) ERR wrong number of arguments for 'zadd' command
192.168.159.130:7000> zadd myzset 1 a
(integer) 1
192.168.159.130:7000> zadd myzset 3 a
(integer) 0
192.168.159.130:7000> zadd myzset 3 b
(integer) 1
192.168.159.130:7000> zadd myzset 2 c
(integer) 1
192.168.159.130:7000> zrange 0 -1
(error) ERR wrong number of arguments for 'zrange' command
192.168.159.130:7000> zrange myzset 0 -1
1) "c"
2) "a"
3) "b"
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "a"
4) "3"
5) "b"
6) "3"
192.168.159.130:7000> zadd myzset 1 a
(integer) 0
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "a"
2) "1"
3) "c"
4) "2"
5) "b"
6) "3"

  • zrem 删除集合中对应元素 zincrby 增加对应元素分数 如果元素不存在对应添加元素
192.168.159.130:7000> zrem myzset a
(integer) 1
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "b"
4) "3"
192.168.159.130:7000> zincrby myzset 5 a
"5"
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "b"
4) "3"
5) "a"
6) "5"
192.168.159.130:7000> zincrby myzset 3 b
"6"
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "a"
4) "5"
5) "b"
6) "6"
  • zrank 返回元素位子 zrevrank 返回元素位子(逆序)
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "a"
4) "5"
5) "b"
6) "6"
192.168.159.130:7000> lrank myzset a
(error) ERR unknown command 'lrank'
192.168.159.130:7000> zrank myzset a
(integer) 1
192.168.159.130:7000> zrank myzset c
(integer) 0
192.168.159.130:7000> zrank myzset b
(integer) 2
192.168.159.130:7000> zrevrank myzset a
(integer) 1
192.168.159.130:7000> zrevrank myzset c
(integer) 2
  • zrevrange 返回逆序排序的元素 zrangebyscore 根据给定的分数区间查询元素
192.168.159.130:7000> zrevrange myzset 0 -1
1) "b"
2) "a"
3) "c"
192.168.159.130:7000> zrevrange myzset 0 -1 withscores
1) "b"
2) "6"
3) "a"
4) "5"
5) "c"
6) "2"
192.168.159.130:7000> zrangebyscore myzset 0 5
1) "c"
2) "a"
192.168.159.130:7000> zrangebyscore myzset 0 5 withscores
1) "c"
2) "2"
3) "a"
4) "5

  • zcount 返回分数区间元素个数
192.168.159.130:7000> zcount myzset 0 8
(integer) 3
192.168.159.130:7000> zcount myzset 0 2
(integer) 1
192.168.159.130:7000> zcount myzset 0 1
(integer) 0
192.168.159.130:7000> zcount myzset 0 -1
(integer) 0
  • zcard 获取集合中元素数量 zremrangebyrank 根据排名删除 zremrangebyscore 根据分数区间删除
192.168.159.130:7001> zremrangebyrank myzset 0 1
-> Redirected to slot [1515] located at 192.168.159.130:7000
(integer) 2
192.168.159.130:7000> zrange 0 -1
(error) ERR wrong number of arguments for 'zrange' command
192.168.159.130:7000> zrange myzset  0 -1
1) "b"
192.168.159.130:7000> ZREMRANGEBYSCORE myzset 0 3
(integer) 0
192.168.159.130:7000> ZREMRANGEBYSCORE myzset 0 7
(integer) 1



==============================================================================================================
redis 数据类型 的命令以及范例 写完了 .希望能帮到大家.下一篇关于redis的博文 是redis的接口类 jedis API剖析



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值