redis学习之redis基本数据类型前言:数据类型详解:

前言:

redis有5种基本数据类型,分别是String(字符串)Hash(字典)List(列表)Set(集合)Zset(有序集合),下面就分别来说一下这五种数据类型。

数据类型详解:

1、String:

二进制安全的数据类型,类似于Java中的Map,以key、value的形式存储数据。它有如下方法: ①、set和get方法:赋值和获取值 语法: set key value get key 例子: set username tom get username

②、del方法:删除指定的key 语法: del key 例子: del username

③、setnx方法:key不存在时进行设置,如果已有这个key就返回0 语法: setnx key value 例子: setnx age 22 如果有age这个key,就返回0,没有就进行设置

④、setex方法:设置有效期 语法: setex key 有效期 value 例子: setex color 10 red 设置color的有效期为10秒,10秒后color为nil

⑤、setrange方法:替换字符串 语法: set key 从第几位开始替换 要替换的字符 例子: set email 12356789@qq.com setrange email 9 gg 把qq替换成gg

⑥、mset和mget方法:一次设置或获取多个值 语法: mset key1 value1 key2 value2 mget key1 key2

⑦、incr和decr方法:对某个值进行递增或递减 语法: incr key decr key

⑧、incrby和decrby方法:可以设置步长的递增和递减 语法: incrby key 步长 decrby key 步长

⑨、append方法:追加字符串 语法: append key 追加的内容

⑩、strlen方法:获取字符串长度 语法: strlen key

2、Hash:

占用内存更少,方便存储对象。它有如下方法: ①、hset和hget方法: 语法: 官方:hset key field value 自己理解:hset hashname key value hget hashname key

②、hmset和hmget:批量操作 语法: hmset hashname key1 value1 key2 value2 hmget hashname key1 key2

③、hincrby和hdecrby:集合递增和递减 语法: hincrby hashname key 步长 hdecrby name key 步长

④、hexists:是否存在key,存在就返回1,不存在返回0 语法: hexists hashname key

⑤、hlen:返回集合中键的个数 语法: hlen hashname

⑥、hdel:删除指定的key 语法: hdel hashname key

⑦、hvals:返回指定hash里的所有value 语法: hvals hashname

⑧、hgetall:返回hash里所有的key、value 语法: hgetall hashname

3、List:

链表结构的集合,既可以做栈也可以做队列,它有如下方法: ①、lpush方法:从头部加入元素(栈),先进后出 语法: lpush key value 例子: lpush list1 "hello" lpush list1 "world"

②、lrange方法:取出list中的元素,从start取到end 语法: lrange key start end 例子: lrange list1 0 -1 表示从头取到尾

③、rpush方法:从尾部加入元素(队列),先进先出 语法: rpush key value 例子: rpush list1 "hello"

④、linsert方法:插入元素 语法: linsert key before value1 insertvalue 例子: linsert list1 before "world" "hello" 表示在world前插入一个hello

⑤、lset方法:将指定下标的元素换掉 语法: lset key 下标 "替换的内容" 例子: lset list1 0 "haha" 表示把索引为0的元素替换成haha

⑥、lrem方法:删除若干个元素,返回删除的个数 语法: lrem key 删除的个数 "删除的元素" 例子: lrem list1 2 "b" 删除两个b

⑦、ltrim方法:保留指定索引范围内的值 语法: ltrim key 索引1 索引2 例子: ltrim list1 2 4 表示保留索引2到4的内容

⑧、lpop方法:从list头部删除元素,并返回删除元素 语法: lpop key

⑨、rpop方法:从list尾部删除元素,并返回删除元素 语法: rpop key

⑩、rpoplpush方法:删除key1中最后一个元素,然后把这个元素加到key2的第一个位置(key1和key2可以相同) 语法: rpoplpush key1 key2

①①、lindex方法:返回list中指定索引的值 语法: lindex key 索引 例子: lindex list1 1 返回list1中第二个元素

①②llen方法:返回list中元素个数 语法: llen key

4、Set:

无序不重复集合,通过hashtable实现。有如下方法: ①、sadd方法:添加元素 语法: 官方:sadd key member 自己理解:sadd setname value 例子: sadd set1 haha

②、srem方法:删除set的元素 语法: srem setname value 例子: srem set1 haha

③、spop方法:指定一个set,随机删除其里面的元素并返回 语法: spop setname 例子: spop set1

④、sdiff方法:返回set1不同于set2的元素 语法: sdiff setname1 setname2

⑤、sdiffstore方法:将set1不同于set2的元素存到set3中去 语法: ```sdiffstore setname1 setname2 setname3``‘

⑥、sinter方法:求set1和set2的交集 语法: sinter setname1 setname2

⑦、sinterstore方法:把set1与set2的交集存到set3中 语法: sinter setname1 setname2 setname3

⑧、sunIon方法:求set1与set2的并集(I是大写的i) 语法: sunIon setname1 setname2

⑨、sunIonstore方法:把set1与set2的并集存入set3 语法: sunIonstore setname1 setname2 setname3

⑩、smove方法:将set1中的某个元素移动到set2中 语法: smove setname1 setname2 value 例子: smove set1 set2 ee 表示将set1中的ee移动到set2中

①①、scard方法:查看set里的元素个数 语法: scard setname

①②、sismember方法:判断某个元素是否为set中元素,是返回1,不是返回0 语法: sismember setname value 例子: sismember set1 haha 判断haha是不是set1中的元素

①③、srandmember方法:随机返回set中count个元素 语法: srandmember setname count 例子: srandmember set1 3 随机返回set1中3个元素

5、Zset:

和set的区别就是,Zset是有序的。它有如下方法: ①、zadd方法:添加元素,如果元素存在,就更新该元素顺序 语法: zadd zsetname score value 例子: zadd zset1 1 haha 表示添加haha这个元素,分数是1

②、zrem方法:删除zset中的元素 语法: zrem zsetname value 例子: zrem zset1 haha

③、zincrby和zdecrby方法:指定步长递增或递减 **语法: ** zincrby zsetname 步长 value zdecrby zsetname 步长 value

④、zrank方法:返回某个元素的排序索引(从小到大排序) 语法: zrank zsetname value 例子: zrank zset1 haha 返回haha在zset1中的序号

⑤、zrevrank方法:返回排序索引(从大到小) 语法: zrevrank zsetname value

⑥、zrangebyscore方法:查找分数在指定区间的数据并返回 语法: zrangebyscore zsetname score1 score2 withscores 例子: zrangebyscore zset1 1 4 withscores 返回分数在1到4之间的数据

⑦、zcard方法:返回zset中元素的个数 语法: zcard zsetname

⑧、zcount方法:返回zset中指定分数区间中元素的个数 语法: zcount zsetname score1 score2

⑧、zremrangebyrank:根据给定的索引区间删除数据 语法: zremrangebyrank zsetname index1 index2

⑨、zremrangebyscore:根据给定的分数区间删除元素 语法: zremrangebyscore zsetname score1 score2

总结:

redis有以上5大数据类型,每个类型都有若干的方法,学习时可以类比Java的集合进行学习。

以上内容属于个人学习笔记整理,如果错误,欢迎批评指正!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小白的技术客栈

Python内置数据结构之集合

今天给大家介绍内置数据结构集合的用法。 看一下集合的思维导图: ? 集合的特点 元素是唯一的 元素是无序的,不是线性结构 集合元素是可hash的 聚合的含义和数...

3494
来自专栏Python小屋

Python内置函数sorted()和列表方法sort()排序规则不得不说的事

Python内置函数sorted()和列表方法sort()可以使用key参数指定排序规则,并且都是稳定排序,也就是说,对于指定规则不能涵盖的元素,本来谁在前面,...

2513
来自专栏机器学习原理

正则表达式符号方法

前言: re模块是爬虫的基础,文章主要从符号和用法来介绍它的基础用法 符号 各个符号及用法如下: 符号 含义 . 表示匹配除了换行符外的任...

2646
来自专栏小白的技术客栈

Python之解析式您知多少?

解析式 解析式 今天给大家介绍Python中的解析式。 ? 解析式简单介绍 解析式, 列表解析 # Python2只有列表解析 生成器解析 # Python...

3625
来自专栏PHP在线

PHP函数

请点击上面蓝色PHP关注 你知道这些简单的函数中的方法吗? count() 函数计算数组中的单元数目或对象中的属性个数。 对于数组,返回其元素的个数,对于其他值...

2765
来自专栏章鱼的慢慢技术路

多维数组的传递

1394
来自专栏天天

数据类型的转换

943
来自专栏小樱的经验随笔

Codeforces 591B Rebranding

B. Rebranding time limit per test:2 seconds memory limit per test:256 megabytes ...

3397
来自专栏PHP实战技术

你应该这个姿势学习PHP(2)

1、循环数组有哪几种方式 1)foreach(能够循环关联和索引数组以及对象) 2)for(只能循环索引数组) 3)list和each配合使用循环数组 $arr...

25810
来自专栏猿人谷

static_cast ,reinterpret_cast

用法:static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查...

18310

扫码关注云+社区