Redis 基本数据类型

一.String类型

常用命令

set <键> <值>

         NX:当数据库中key不存在时,可以将key-value添加数据库

        XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥

        EX:key的超时秒数

        PX:key的超时毫秒数

设值 取值

setex <key><过期时间><value>#设置键值的同时,设置过期时间,单位秒。

setex key 80 val

set ssn us ex 80

setnx key value 不存在就插入(not exists)

 set key val nx

--取值

get <key>查询对应键值

示例: get key

getset <key><value> 以新换旧,设置了新值同时获得旧值。

示例:get key key_new

批量操作:

mset key1 key2 批量设置key

mget key1 key2 批量获取

msetnx <key1><value1><key2><value2> ..... 同时设置一个或多个 键值对时所有的key都要不存在,如果有一个存在就都失败

递增递减

incr <key>

将 key 中储存的数字值增1

只能对数字值操作,如果为空,新增值为1

decr <key>

将 key 中储存的数字值减1

只能对数字值操作,如果为空,新增值为-1

incrby / decrby <key><步长>将 key 中储存的数字值增减。自定义步长。

二,list类型

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

它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

1.从左边/右边插入一个或多个值。

lpush/rpush <key><value1><value2><value3> ....

2.取值:按照索引下标获得元素(从左到右)

lrange <key><start><stop>

0左边第一个,-1右边第一个,(0 -1表示获取所有)

3.从左边/右边吐出一个值。值在键在,值光键亡。

lpop/rpop <key>

4.从<key1>列表右边吐出一个值,插到<key2>列表左边。

rpoplpush <key1><key2>

5.按照索引下标获得元素(从左到右)

lindex <key><index>

6.获得列表长度

llen <key

7.从左边删除n个对应的value值(从左到右)

lrem <key><n><value>

aaa里面有1 2 4 删除了一个2也可删除n 个只要你里面有

8.将列表key下标为index的值替换成value

lset<key><index><value>

三.hash类型

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

类似Java里面的Map<String,Object>

用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储

通过第三种方式:( key(用户ID) + field(属性标签)) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题

1.给<key>集合中的<field>键赋值<value>

hset <key><field><value>

2.从<key1>集合<field>取出 value

hget <key1><field>

3.批量设置hash的值

hmset <key1><field1><value1><field2><value2>...

4.查看哈希表 key 中,给定域 field 是否存在。

hexists<key1><field>

5.<key>列出该hash集合的所有field

hkeys <key>

6.<key>列出该hash集合的所有value

hvals <key>

7.为哈希表 key 中的域 field 的值加上增量 1 -1

hincrby <key><field><increment>

8.将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .

hsetnx <key><field><value>

四.set类型

set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。

1.将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略

sadd <key><value1><value2> .....

2.取出该集合的所有值。

smembers <key>

3.判断集合<key>是否为含有该<value>值,有1,没有0

sismember <key><value>

4.返回该集合的元素个数。

scard <key>

5.删除集合中的某个元素。

srem <key><value1><value2> ....

6.随机从该集合中吐出count个值。会从集合中删除数据

spop <key> <count>

7.随机从该集合中取出n个值。不会从集合中删除 。

srandmember <key> <n>

8.把集合中一个值从一个集合移动到另一个集合

smove <source><destination>value

9.返回两个集合的交集元素。

sinter <key1><key2>

10.返回两个集合的并集元素。

sunion <key1><key2>

11.返回两个集合的差集元素(key1中的,不包含key2中的)

sdiff <key1><key2>

五.zset类型(Sorted set)

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。

不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。

因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。

访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

1.赋值:将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

zadd <key><score1><value1><score2><value2>…

2.取值:返回有序集 key 中,下标在<start><stop>之间的元素

带WITHSCORES,可以让分数一起和值返回到结果集。

zrange <key><start><stop> [WITHSCORES]

3.返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

zrangebyscore key min max [withscores] [limit offset count]

4.同上,改为从大到小排列。

zrevrangebyscore key max min [withscores] [limit offset count]

5.删除该集合下,指定值的元素

zrem <key><value>

6.统计该集合,分数区间内的元素个数

zcount <key><min><max>

7.返回该值在集合中的排名,从0开始。

zrank <key><value>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值