博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis学习(二)—— 数据类型(1)
阅读量:6273 次
发布时间:2019-06-22

本文共 6259 字,大约阅读时间需要 20 分钟。

hot3.png

一、支持的数据类型有哪些

redis支持的数据类型非常丰富,有String、list、set、hash、zset、hyperLogLog、geo

二、详细介绍每种数据类型

1. String类型

redis中的字符串就是一个由字节组成的序列。字符串可以储存一下3种类型的数据

    字节串

    整数

    浮点数

对整数和浮点数的操作

命令INCR,将存储的值加上1

127.0.0.1:6379> set s_incr 0OK127.0.0.1:6379> incr s_incr(integer) 1127.0.0.1:6379> incr s_incr(integer) 2

命令DECR,将存储的值减上1

127.0.0.1:6379> set s_decr 10OK127.0.0.1:6379> decr s_decr(integer) 9127.0.0.1:6379> decr s_decr(integer) 8

命令INCRBY,将存储的值加上整数

127.0.0.1:6379> set s_incrby 0OK127.0.0.1:6379> incrby s_incrby 5(integer) 5127.0.0.1:6379> incrby s_incrby 2(integer) 7

命令DECRBY,将存储的值减上整数

127.0.0.1:6379> set s_decrby 10OK127.0.0.1:6379> decrby s_decrby 2(integer) 8127.0.0.1:6379> decrby s_decrby 3(integer) 5

命令INCRBYFLOAT,将存储的值加上浮点数(2.6版本以上使用)

127.0.0.1:6379> set s_incrbyfloat 2OK127.0.0.1:6379> incrbyfloat s_incrbyfloat 1.5"3.5"127.0.0.1:6379> incrbyfloat s_incrbyfloat 0.6"4.1"

对字符串的操作

命令APPEND,将值value追加到给定键当前存储的值的末尾

127.0.0.1:6379> set s_append leoOK127.0.0.1:6379> append s_append _111(integer) 7127.0.0.1:6379> get s_append"leo_111"

命令GETRANGE,获取start至end范围内所有字符组成的子串,包括start和end在内(该命令是由SUBSTR命令改名而来,2.6以上版本还是推荐使用GETRANGE命令)

127.0.0.1:6379> getrange s_append 1 3"eo_"

命令SETRANGE,将从start偏移量开始的子串设置为给定值

127.0.0.1:6379> setrange s_append 4 222(integer) 7127.0.0.1:6379> get s_append"leo_222"

命令STRLEN,获得该键保存的value的长度

127.0.0.1:6379> strlen s_append(integer) 7

命令GET,获得该键保存的值

127.0.0.1:6379> get s_append"leo_222"

命令GETSET,设置一个字符类型的值,并且返回他之前的值

127.0.0.1:6379> getset s_append leo_333"leo_222"127.0.0.1:6379> getset s_append1 leo_333(设置一个不存在的key会返回nil)(nil)127.0.0.1:6379> get s_append1"leo_333"

命令MGET,根据提供的多个键返回键对应的多个值

127.0.0.1:6379> set s_append1 leo_444OK127.0.0.1:6379> mget s_append s_append11) "leo_333"2) "leo_444"

命令MSET,设置多个键值对

127.0.0.1:6379> mset s_append2 leo_555 s_append3 leo_666OK127.0.0.1:6379> mget s_append2 s_append31) "leo_555"2) "leo_666"

命令MSETNX,设置多个键值对,如果键不存在的时候设置成功(如果多个键值对有一个不满足要求,就全部设置不成功)

127.0.0.1:6379> msetnx s_append3 leo_777 s_append4 leo_888(integer) 0127.0.0.1:6379> mget s_append3 s_append41) "leo_666"2) (nil)127.0.0.1:6379> msetnx s_append5 leo_777 s_append4 leo_888(integer) 1127.0.0.1:6379> mget s_append5 s_append41) "leo_777"2) "leo_888"

命令PSETEX,给一个键设置值和过期的毫秒数

127.0.0.1:6379> psetex s_ex 5000 testOK127.0.0.1:6379> get s_ex"test"127.0.0.1:6379> get s_ex(nil)

命令SET,给一个键设置字符串值,命令格式set key value [EX seconds] [PX milliseconds] [NX|XX]

127.0.0.1:6379> set s_set test1 EX 20OK127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set"test1"127.0.0.1:6379> get s_set(nil)127.0.0.1:6379> set s_setml test EX 10 PX 5000(PX和EX参数不能同时设置)(error) ERR syntax error127.0.0.1:6379> set s_setml test PX 5000(这里手慢了一点,不过确实生效了)OK127.0.0.1:6379> get s_setml(nil)127.0.0.1:6379> set s_nx test XX(该键如果存在的时候才会设置成功)(nil)127.0.0.1:6379> get s_nx(nil)127.0.0.1:6379> set s_nx test NX(该键如果不存在的时候才会设置成功)OK127.0.0.1:6379> set s_nx test NX(nil)

命令SETEX,给键设置值和过期时间

127.0.0.1:6379> setex s_ex 5 aaaOK127.0.0.1:6379> get s_ex"aaa"127.0.0.1:6379> get s_ex(nil)

命令SETNX,给键设置值,只有键不存在的时候才能成功

127.0.0.1:6379> setnx s_nx test(integer) 0127.0.0.1:6379> setnx s_nx test(integer) 0127.0.0.1:6379> get s_nx"test"

2. list类型

redis中一个列表结构可以有序的存储多个字符串,并且可以重复。

命令RPUSH,将给定值推入列表的右端

127.0.0.1:6379> rpush l_rpush leo(integer) 1127.0.0.1:6379> rpush l_rpush leo1(integer) 2127.0.0.1:6379> rpush l_rpush leo(integer) 3

命令LRANGE,获取列表在给定范围上的所有值

127.0.0.1:6379> lrange l_rpush 0 -1(0 -1代表获取列表中的所有值)1) "leo"2) "leo1"3) "leo"127.0.0.1:6379> lrange l_rpush 0 11) "leo"2) "leo1"

命令LINDEX,获取列表在给定位置上的单个元素

127.0.0.1:6379> lindex l_rpush 1"leo1"127.0.0.1:6379> lindex l_rpush 2"leo"

命令LPOP,从列表的左端弹出一个值,并返回被弹出的值

127.0.0.1:6379> lpop l_rpush"leo"127.0.0.1:6379> lrange l_rpush 0 -11) "leo1"2) "leo"

命令BLPOP,从列表的左端弹出一个值,并返回被弹出的值,如果列表为空就会阻塞,直到列表中存在值

127.0.0.1:6379> blpop l_bl 20(20为等待超时时间,如果超时会返回nil)(nil)

先执行

127.0.0.1:6379> blpop b_bl 20

然后重新开一个命令行窗口执行

127.0.0.1:6379> lpush b_bl 1(integer) 1

可以看到BLPOP命令正确返回了数据

127.0.0.1:6379> blpop b_bl 201) "b_bl"2) "1"(3.63s)

命令BLPOP,从列表的右端弹出一个值,并返回被弹出的值,如果列表为空就会阻塞,直到列表中存在值

命令BRPOPLPUSH,从原列表中弹出最右边的值,并且推入到另一个列表的最左边

127.0.0.1:6379> lpush l_source 1 2 3(integer) 3127.0.0.1:6379> lpush l_dest 4 5 6(integer) 3127.0.0.1:6379> brpoplpush l_source l_dest 20"1"127.0.0.1:6379> lrange l_dest 0 -11) "1"2) "6"3) "5"4) "4"

命令LINDEX,从列表中的某个索引获得这个元素

127.0.0.1:6379> LINDex l_dest 2"5"

命令LINSERT,从列表中另外一个元素的前面或者后面插入一个元素

127.0.0.1:6379> linsert l_dest before 6 2(integer) 5127.0.0.1:6379> lrange l_dest 0 -11) "1"2) "2"3) "6"4) "5"5) "4"

命令LLEN,获得list的长度

127.0.0.1:6379> llen l_dest(integer) 5

命令LPOP,从列表左边弹出一个元素

127.0.0.1:6379> lpop l_dest"1"

命令LPUSH,从列表左边推入一个元素

127.0.0.1:6379> lpush l_dest 0(integer) 5127.0.0.1:6379> lrange l_dest 0 -11) "0"2) "2"3) "6"4) "5"5) "4"

命令LPUSHX,如果键存在的话,就从左边推入一个元素

127.0.0.1:6379> lpushx l_dest1 123(integer) 0127.0.0.1:6379> lpushx l_dest 123(integer) 6127.0.0.1:6379> lrange l_dest 0 -11) "123"2) "0"3) "2"4) "6"5) "5"6) "4"

命令LREM,从列表左边移除几个给定的元素

127.0.0.1:6379> lrange l_dest 0 -11) "4"2) "0"3) "123"4) "0"5) "2"6) "6"7) "5"8) "4"127.0.0.1:6379> lrange l_dest 0 -1(最左边的0被移除)1) "4"2) "123"3) "0"4) "2"5) "6"6) "5"7) "4"127.0.0.1:6379> lpush l_dest 4(integer) 8127.0.0.1:6379> lrem l_dest 2 4(移除了左边的两个4)(integer) 2127.0.0.1:6379> lrange l_dest 0 -11) "123"2) "0"3) "2"4) "6"5) "5"6) "4"

命令LSET,给某个列表的第几个索引的元素设置值

127.0.0.1:6379> lset l_dest 1 000OK127.0.0.1:6379> lrange l_dest 0 -11) "123"2) "000"3) "2"4) "6"5) "5"6) "4"

命令LTRIM,修剪列表

127.0.0.1:6379> lrange l_dest 0 -11) "123"2) "000"3) "2"4) "6"5) "5"6) "4"127.0.0.1:6379> ltrim l_dest 1 2(只保留index1到index2之间的元素)OK127.0.0.1:6379> lrange l_dest 0 -11) "000"2) "2"

命令RPOP,从右侧弹出元素

127.0.0.1:6379> lrange l_dest 0 -11) "000"2) "2"127.0.0.1:6379> rpop l_dest"2"127.0.0.1:6379> lrange l_dest 0 -11) "000"

命令RPOPLPUSH,从原列表的右侧弹出元素,加入到给定列表的左边

127.0.0.1:6379> rpoplpush l_dest l_source"000"127.0.0.1:6379> lrange l_dest 0 -1(empty list or set)127.0.0.1:6379> lrange l_source 0 -11) "000"2) "3"3) "2"

命令RPUSHX,如果列表存在就从右侧推入元素

127.0.0.1:6379> rpushx l_dest1 haha(integer) 0127.0.0.1:6379> rpushx l_source haha(integer) 4

 

转载于:https://my.oschina.net/u/1175305/blog/1807094

你可能感兴趣的文章
CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid
查看>>
Extjs分页使用Java实现数据库数据查询
查看>>
BayWa收购光伏分销商Solarmatrix进军澳大利亚市场
查看>>
股东致函雅虎董事会要求别再烧钱 雅虎反呛
查看>>
移动OA的魅力--大众点评的“企业号”运用法则
查看>>
芯片进口额远超原油 中国芯待发力
查看>>
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>
关于如何以编程的方式执行TestNG
查看>>
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>
浅谈MySQL 数据库性能优化
查看>>
拥抱白帽黑客,通用宣布安全漏洞报告项目
查看>>
《UNIX/Linux 系统管理技术手册(第四版)》——1.10 其他的权威文档
查看>>
灵动空间 创享生活
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.6 UDP回射客户程序:dg_cli函数...
查看>>
不要将时间浪费到编写完美代码上
查看>>
《第一桶金怎么赚——淘宝开店创业致富一册通》一一第1章 创业梦想,怎样起步...
查看>>
基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统
查看>>