第三章 : redis数据结构种类

第三章 : redis数据结构种类第三章 : redis数据结构种类

大家好,又见面了,我是你们的朋友全栈君。

五中数据结构:字符串(String) ,字符串列表(list),有序字符串集合(sorted set),哈希(hash),字符串集合(set)。

下面介绍下string 的应用:

得到所有key

127.0.0.1:6379> keys *
1) "foo"
2) "liux"
3) "liux2"

获得值:

127.0.0.1:6379> get foo
"bar"

删除值:

127.0.0.1:6379> del foo
(integer) 1
127.0.0.1:6379> keys *
1) "liux"
2) "liux2"

设置获取值:

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

incr自增,integer可直接变String,但是String 不能变integer,可理解为字符串格式的数字,能自增

127.0.0.1:6379> incr n
(integer) 1
127.0.0.1:6379> get n
"1"
127.0.0.1:6379> set n 2
OK
127.0.0.1:6379> get n
"2"
127.0.0.1:6379> set n ee
OK
127.0.0.1:6379> incr n
(error) ERR value is not an integer or out of range

decr 自减,同自增

127.0.0.1:6379> decr n1
(integer) -1
127.0.0.1:6379> get n1
"-1"
127.0.0.1:6379> set n1 ee
OK
127.0.0.1:6379> get n1
"ee"
127.0.0.1:6379> desc n1
(error) ERR unknown command 'desc'

incrby 指向自增增量

127.0.0.1:6379> incrby n3 6
(integer) 6
127.0.0.1:6379> get n3
"6"

append 追加

127.0.0.1:6379> append name qwe
(integer) 4
127.0.0.1:6379> get name
"3qwe"
127.0.0.1:6379> append name 123
(integer) 7
127.0.0.1:6379> get name
"3qwe123"

同时删除多个值(key):

127.0.0.1:6379> keys *
1) "n3"
2) "n"
3) "n4"
4) "name2"
5) "liux"
6) "n1"
7) "name"
8) "liux2"
127.0.0.1:6379> del n3 n n4
(integer) 3
127.0.0.1:6379> keys *
1) "name2"
2) "liux"
3) "n1"
4) "name"
5) "liux2"
127.0.0.1:6379> 

下面我们介绍下hash类型的:

设置获取hash

127.0.0.1:6379> hset h1 username xiaoming
(integer) 1
127.0.0.1:6379> get hset h1
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379> get h1
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> hset h1 username
(error) ERR wrong number of arguments for 'hset' command
127.0.0.1:6379> hget h1
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget h1 username
"xiaoming"

设置获取多个hash

127.0.0.1:6379> hmset h2 username xiaoming2 password 123qwe
OK
127.0.0.1:6379> hget h2 username
"xiaoming2"
127.0.0.1:6379> hget h2 password
"123qwe"
127.0.0.1:6379> hgetall h2
1) "username"
2) "xiaoming2"
3) "password"
4) "123qwe"

删除一个或多个hash

127.0.0.1:6379> hdel h1 username
(integer) 1
127.0.0.1:6379> hgetall h1
(empty list or set)
127.0.0.1:6379> hdelall h2
(error) ERR unknown command 'hdelall'
127.0.0.1:6379> hdel h2 username password
(integer) 2

hash设置自增和自增量:

127.0.0.1:6379> hset h3 age 20
(integer) 1
127.0.0.1:6379> hget h3 age
"20"
127.0.0.1:6379> hincrby h1 age 5
(integer) 5
127.0.0.1:6379> hget h1 age
"5"
127.0.0.1:6379> hincrby h3 age 6
(integer) 26

hash 判断是否存在某元素,返回1为存在,返回0不存在

127.0.0.1:6379> hset h5 name xiaoming
(integer) 1
127.0.0.1:6379> hget h5 name
"xiaoming"
127.0.0.1:6379> hexists h5 name
(integer) 1
127.0.0.1:6379> hexists h5 name2
(integer) 0
127.0.0.1:6379> hget h5 name2
(nil)

获取属性个数

127.0.0.1:6379> hgetall h5
1) "name"
2) "xiaoming"
127.0.0.1:6379> hlen h5
(integer) 1

获取所有值:

127.0.0.1:6379> hvals h5
1) "xiaoming"


list的使用,常用的命令有两端添加,两端弹出,扩展命令:

从左开始添加,然后获取:

127.0.0.1:6379> lpush l1 a b c d
(integer) 4
127.0.0.1:6379> lpush l1 1 2 3 4
(integer) 8
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"
8) "a"

获取部分:

127.0.0.1:6379> lrange l1 0 4
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"

从右开始添加,然后获取:

127.0.0.1:6379> rpush l2 a b c d
(integer) 4
127.0.0.1:6379> rpush 1 2 3 4
(integer) 3
127.0.0.1:6379> rrenge l2
(error) ERR unknown command 'rrenge'
127.0.0.1:6379> lrange l2
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange l2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"

rpop 从右侧弹出集合元素

127.0.0.1:6379> rpop l1 
"a"
127.0.0.1:6379> LRANGE l1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"

lpop从左边弹出集合元素

127.0.0.1:6379> lpop l1
"4"
127.0.0.1:6379> LRANGE l1 0 -1
1) "3"
2) "2"
3) "1"
4) "d"
5) "c"
6) "b"

llen查看元素个数

127.0.0.1:6379> llen l1
(integer) 6

lpushx 集合头部(左边)插入元素单个或多个元素

127.0.0.1:6379> lpushx l1 4
(integer) 7
127.0.0.1:6379> LRANGE l1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"
127.0.0.1:6379> LPUSH l1 5 6
(integer) 9
127.0.0.1:6379> LRANGE l1 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
7) "d"
8) "c"
9) "b"

rpush 集合尾部(右端)插入元素

127.0.0.1:6379> RPUSH l1 e f
(integer) 11
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "3"
 5) "2"
 6) "1"
 7) "d"
 8) "c"
 9) "b"
10) "e"
11) "f"

rpushx 集合尾部(右端)插入一个元素(只能插入一个)

127.0.0.1:6379> rpushx l1 i
(integer) 12
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "3"
 5) "2"
 6) "1"
 7) "d"
 8) "c"
 9) "b"
10) "e"
11) "f"
12) "i"

从制定方向产出指定元素的个数:

127.0.0.1:6379> LREM l1 1 1
(integer) 1
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "3"
 5) "2"
 6) "d"
 7) "c"
 8) "b"
 9) "e"
10) "f"
11) "i"
127.0.0.1:6379> RPUSH l1 2 3 4 5 3 3
(integer) 17
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "3"
 5) "2"
 6) "d"
 7) "c"
 8) "b"
 9) "e"
10) "f"
11) "i"
12) "2"
13) "3"
14) "4"
15) "5"
16) "3"
17) "3"
127.0.0.1:6379> LREM l1 3 3
(integer) 3
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "2"
 5) "d"
 6) "c"
 7) "b"
 8) "e"
 9) "f"
10) "i"
11) "2"
12) "4"
13) "5"
14) "3"

上面是从左边删,下面从右边删除元素,可理解为从左往右删为正,反之为负:

127.0.0.1:6379> LREM l1 -2 3
(integer) 1
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "2"
 5) "d"
 6) "c"
 7) "b"
 8) "e"
 9) "f"
10) "i"
11) "2"
12) "4"
13) "5"

删除指定某个元素的所以值:

127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "2"
 5) "d"
 6) "c"
 7) "b"
 8) "e"
 9) "f"
10) "i"
11) "2"
12) "4"
13) "2"
127.0.0.1:6379> LREM l1 0 2
(integer) 3
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "d"
 5) "c"
 6) "b"
 7) "e"
 8) "f"
 9) "i"
10) "4"


lset设置指定索引的值,索引从0开始:

127.0.0.1:6379> LSET l1 3 xxxx
OK
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "xxxx"
 5) "c"
 6) "b"
 7) "e"
 8) "f"
 9) "i"
10) "4"

insert 在集合里之前和之后插入指定元素:

127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "qqqq"
 5) "xxxx"
 6) "c"
 7) "b"
 8) "e"
 9) "f"
10) "i"
11) "4"
127.0.0.1:6379> linsert l1 after xxxx qqqq
(integer) 12
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "qqqq"
 5) "xxxx"
 6) "qqqq"
 7) "c"
 8) "b"
 9) "e"
10) "f"
11) "i"
12) "4"

rpoplpush把a集合尾部元素弹出插入到b集合头部

127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "qqqq"
 5) "xxxx"
 6) "qqqq"
 7) "c"
 8) "b"
 9) "e"
10) "f"
11) "i"
12) "4"
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "qqqq"
 5) "xxxx"
 6) "qqqq"
 7) "c"
 8) "b"
 9) "e"
10) "f"
11) "i"
12) "4"
127.0.0.1:6379> LRANGE l2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "i"
127.0.0.1:6379> RPOPLPUSH l1 l2
"4"
127.0.0.1:6379> LRANGE l1 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "qqqq"
 5) "xxxx"
 6) "qqqq"
 7) "c"
 8) "b"
 9) "e"
10) "f"
11) "i"
127.0.0.1:6379> LRANGE l2 0 -1
1) "4"
2) "a"
3) "b"
4) "c"
5) "d"
6) "i"


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106133.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sop流程图模板_这是一份标准作业流程SOP详解,附流程图绘制规范,不愁不会画!…「建议收藏」

    sop流程图模板_这是一份标准作业流程SOP详解,附流程图绘制规范,不愁不会画!…「建议收藏」注:资料来源百度、档即用网,品质人生质量开讲平台搜集、整理、编辑,仅供学习交流所用,请勿做其他用途!小编辛苦整理,转载请注明出处。什么是SOP?StandardOperationProcedure所谓SOP,是StandardOperationProcedure三个单词中首字母的大写,即标准作业程序。是以文件的形式描述作业员在生产作业过程中的操作步骤和应遵守的事项;是作业员的作业指导书…

    2022年5月26日
    170
  • DatagramSocket编程

    DatagramSocket编程importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.IOException;importjava.ne

    2022年5月31日
    31
  • 多个单列索引和联合索引的区别详解

    多个单列索引和联合索引的区别详解背景:为了提高数据库效率,建索引是家常便饭;那么当查询条件为2个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢?我在这里详细测试分析下。一、联合索引测试注:Mysql版本为5.7.20创建测试表(表记录数为63188):CREATETABLE`t_mobilesms_11`(`id`bigint(20)NOT…

    2022年6月4日
    44
  • Python 源码混淆与加密

    Python 源码混淆与加密Python是一种解释型语言,没有编译过程,发布程序的同时就相当于公开了源码,这也是其作为开源语言的一个特性。但在某些场景下,我们的源码是不想被别人看到的,例如开发商业软件、编写0day漏洞POC/EXP、免杀shellcode等。多人学习python,不知道从何学起。很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。很多已经做案例的人,却不知道如何去学习更加高深的知识。那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代

    2022年8月23日
    13
  • golang激活码2021_通用破解码

    golang激活码2021_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    322
  • 计划任务定时关机不执行_IT运维管理制度

    计划任务定时关机不执行_IT运维管理制度《定时执行专家》是一款制作精良、功能强大、简单易用的专业级定时任务执行软件。软件具有18种任务类型、11种任务触发方式(包含Cron方式),能够达到毫秒级的执行精度,并且全面支持Cron表达式。软件采用多线程方式检测任务触发和任务执行,可以同时支持数十个任务的毫秒级触发。软件无需安装,无时间限制,欢迎下载使用。……………

    2022年9月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号