Redis入门指南之数据类型

字符串类型

一个字符串类型键允许存储的最大容量512MB

1.赋值与取值

127.0.0.1:6379> set name yinnana
OK
127.0.0.1:6379> get name
"yinnana"

2.递增/递减数字

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incrby num 5
(integer) 7
127.0.0.1:6379> decr num
(integer) 6
127.0.0.1:6379> decrby num 2
(integer) 4
127.0.0.1:6379> incrbyfloat num 2.3
"6.3"

3.向尾部追加值

127.0.0.1:6379> append name " haha"
(integer) 12
127.0.0.1:6379> get name
"yinnana haha"

4.获取字符串长度

127.0.0.1:6379> strlen name
(integer) 12

5.同时获得/设置多个键值

127.0.0.1:6379> mset city beijing sex male age 12
OK
127.0.0.1:6379> mget city sex age
1) "beijing"
2) "male"
3) "12"

6.位操作

GETBIT key offset

SETBIT key offset value

BITCOUNT key [start][end]

BITTOP operation destkey key[key...]


redis 键命名    对象类型:对象ID:对象属性


散列

redis的其他数据类型,不支持数据类型嵌套。

比如集合类型的每个元素都只能是字符串,不能是另个集合或者散列表。

散列类型适合存储对象:使用对象类别+ID构建键名,字段表示对象属性,而字段值则存储属性值。

127.0.0.1:6379> hset person hair black  ## HSET key field value 单个设置键值对
(integer) 1
127.0.0.1:6379> hset person face white
(integer) 1
127.0.0.1:6379> hmset person hand long leg short   ## HSET key field value field value 多个设置键值对
OK
127.0.0.1:6379> hget person hand        ## HGET key field 单个键获取
"long"
127.0.0.1:6379> hmget person hair face leg  ## HMGET key field ​[field ...]多个键获取
1) "black"
2) "white"
3) "short"
127.0.0.1:6379> hgetall person    ##获取键中所有字段和字段值
1) "hair"
2) "black"
3) "face"
4) "white"
5) "hand"
6) "long"
7) "leg"
8) "short"
127.0.0.1:6379> hexists person leg    ##判断字段是否存在  存在返回1,不存在返回0
(integer) 1
127.0.0.1:6379> hsetnx person leg fat  ##若字段不存在则赋值;若字段存在则不执行操作
(integer) 0
127.0.0.1:6379> hset person price "100"
(integer) 1
127.0.0.1:6379> hincrby person price 2
(integer) 102
127.0.0.1:6379> hdel person price ##删除某键
(integer) 1
127.0.0.1:6379> hkeys person  ##只获取字段名们
1) "hair"
2) "face"
3) "hand"
4) "leg"
127.0.0.1:6379> hvals person ##只获取字段值们
1) "black"
2) "white"
3) "long"
4) "short"
127.0.0.1:6379> hlen person  ##获取字段数量
(integer) 4

列表

内部使用双向链表实现的。借助列表类型,redis可以作为队列使用。


向列表两端增加元素,返回值表示增加元素后 列表的长度。

LPUSH    key    value    [value...]

RPUSH    key    value    [value...]


从列表两端弹出元素

LPOP    key

RPOP    key

LPOP命令执行分为两步操作:

第一步将列表左边的元素从列表中移除,第二步返回被移除的元素值。


获取列表中元素的个数

LLEN    key    键不存在时返回0


获得列表片段

LRANGE    key    start    stop

LRANGE命令在取得列表片段的同时不会像LPOP一样删除该片段,

跟开发语言中方在于法slice很像,区别在于LRANGE返回的值包含最右边元素


LRANGE支持负索引,表示从右边开始计算序数

例如,LRANGE    number    0    -1 可以获取列表中所有的元素

注意,如果start>stop,返回空列表。

如果stop>实际索引范围,则会返回到列表最右边的元素


删除列表中指定的值

LREM    key    count    value    删除列表中前count个值为value的元素

count>0 从左边删

count<0 从右边删

count=0 删除所有值为value的元素


获得/设置指定索引的元素值

LINDEX    key    index

LSET    key    index    value


只保留列表指定片段

LTRIM    key    start    end

删除指定索引范围之外的所有元素


向列表中插入新元素

LINSERT    key    BEFORE|AFTER    privot    value

首先会在列表中从左到右查找值为privot的元素,然后将value插入其前面/后面


将元素从一个列表转到另一个列表

RPOPLPUSH    source    destination


***********************************************************

集合类型

区别列表类型,集合类型无序性、唯一性

集合类型在redis内部是使用值为空的散列表(hash table).

常用操作是向集合中加入或删除元素、判断某个元素是否存在。

多个集合类型键之间还可以进行并集、交集和差集运算。


增加/删除元素

SADD    key    member    [member    ....]

SREM    key    member    [member    ....]


获取集合中的所有元素

SMEMBERS    key


判断元素是否存在在集合中

SISMEMBER    key    member


集合间运算

SDIFF    key    [key    ,,]        差集

SINTER    key    [key    ,,]    交集

SUNION    key    [key    ,,]    并集


获得集合中元素个数

SCARD    key


进行集合运算并将结果存储

SDIFFSTORE    destination    key    [key    ...]

SINTERSTORE    destination    key    [key    ...]

SUNIONSTORE    destination    key    [key    ...]


随机获得集合中的元素

SRANDMEMBER    key    [count]    可随机获得多个元素

count>0    不重复

count<0    可能相同


从集合中弹出一个元素

SPOP    key


*****************************

有序集合类型(Sorted Set)

在集合类型的基础上,有序集合类型为集合中的每个元素都关联了一个分数,不仅可以插入、删除、判断元素是否存在等集合类型的操作,还能获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等操作。


有序集合类型与列表类型

相似处:都是有序的、都可以获得一定范围的元素

区别:

1.列表类型通过链表实现的,获取靠近两端的数据速度极快,访问中间数据速度慢;有序集合类型是使用散列表和跳跃表(Skip list)实现的,即便读取中间部分数据也极快。

2.列表类型不能简单的调整某个元素的位置,但是有序集合可以(通过改变这个元素的分数)

3.有列表序集合比列表类型更耗费内存


命令

增加元素

ZADD key score member [score member...]

若该元素已经存在,则会用新的分数替换原有的分数


获得元素的分数

ZSCORE key member


获得排名在某个范围的元素列表

ZRANGE key start stop [WITHSCORES]

ZREVRANGE key start stop [WITHSCORES]

ZRANGE 按照元素分数从小到大的顺序返回索引从 start到stop之间的所有元素(包含两端的元素),如果需要同时获得元素的分数的话可以加上参数WITHSCORES。如果两个元素的分数相同,redis会按照字典顺序进行排列。


获得指定分数范围的元素

ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count]

按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素。如果希望分数范围不包含端点值,可以在分数前加上"("。-inf  +inf 表示负无穷 正无穷。LIMIT offset count在获得的元素列表的基础上向后偏移offset个元素,并且只获取前count个元素。


增加某个元素的分数

ZINCRBY key increment member


获得集合中元素的数量

ZCARD key


获得指定分数范围内的元素个数

ZCOUNT key min max


删除一个或多个元素

ZREM key member [member ...]


按照排名范围删除元素

ZREMRANGEBYRANK key start stop


按照分数范围删除元素

ZREMRANGEBYSCORE key min max


获得元素的排名

ZRANK key member

ZREVRANK key member


计算有序集合的交集

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]][AGGREGATE SUN|MIN|MAX]


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值