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 条评论
登录 后参与评论

相关文章

来自专栏漫漫深度学习路

c++复杂声明

void (*funcPtr)(); 上面声明了一个指向函数的指针,当碰到这样一个比较复杂的声明时,最好的方法是从 中间开始和向外扩展: 从中间开始:即 从变量...

1697
来自专栏互联网大杂烩

堆内存和栈内存

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作...

593
来自专栏向治洪

数据结构之数组

一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变...

1755
来自专栏程序员互动联盟

【记忆卡片】C语言32个关键字

C语言的关键字共有32个,可分其为 数据类型关键字、控制语句关键字、存储类型关键字以及其它关键字 数据类型关键字(12个): (1) char :声明字符型变量...

3457
来自专栏null的专栏

C/C++——vector的基本操作总结

标准库vector类型是C++中使用较多的一种类模板,vector类型相当于一种动态的容器,在vector中主要有一些基本的操作,接下来分别从以下的几个方面总结...

3123
来自专栏null的专栏

PHP基础——字符串的常用操作

在PHP中使用较多的是字符串的操作,字符串的常用操作主要有如下的几种: 字符串的表示 字符串的连接 去除字符串中的空格和特殊字符 字符串的比较 分割字符串和合成...

2995
来自专栏Python中文社区

一文读懂Python可迭代对象、迭代器和生成器

序列可以迭代的原因:iter 函数。解释器需要迭代对象 x 时,会自动调用 iter(x)。内置的 iter 函数有以下作用:

923
来自专栏武培轩的专栏

排序算法-选择排序

算法简介 选择排序就是找到数组中最小元素将其和数组第一个元素交换位置,然后在剩下的元素中找到最小元素并将其与数组第二个元素进行交换,以此类推,直至整个数组排序结...

2884
来自专栏Java帮帮-微信公众号-技术文章全总结

Java案例-数组求余问题

? 案例分析 要求定义一个int 型数组a,包含100 个元素,保存100个随机的4 位数。再定义一个int 型数组b,包含10 个元素。统计a 数组中的元素...

3354
来自专栏郭耀华‘s Blog

Java集合框架(一)—— Collection、Iterator和Foreach的用法

1.Java集合概述   在编程中,常常需要集中存放多个数据。当然我们可以使用数组来保存多个对象。但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长...

3129

扫码关注云+社区