redis数据类型

redis是基于内存的key-value键值对内存数据库,提供了丰富的数据类型,数据类型指的是value的数据类型,key的数据类型都是字符串,value的数据类型有:
      字符串(String)、列表(List)、哈希表(Hash)、集合(Set)、有序集合(Sorted Set)、
      地理空间(Geospatial)、基数统计(HyperLogLog)、位图(Bitmap)、位域(Bitfield)和流(Stream);

一 字符串

String类型是redis最基本的数据类型,是二进制安全的,可以包含任意数据,String类型最多是512M;

set key value:设置指定key的值,set命令有ex、px、exat、pxat、nx、xx、keepttl、get这几个可选参数
        ex seconds:以秒为单位设置过期时间;
        px milliseconds:以毫秒为单位设置过期时间;
        exat timestamp:设置以秒为单位的unix时间戳所对应的时间为过期时间;
        pxat milliseconds-timestamp:设置以毫秒为单位的unix时间戳所对应的时间为过期时间;
        nx:键不存在的时候设置键值对,设置成功返回OK,设置不成功返回nil;
        xx:键存在的时候设置键值对,设置成功返回OK,设置不成功返回nil;
        keepttl:保留key之前设置好的生命周期;
        get:返回指定键原本的值,若键不存在时返回nil;
设置成功则返回OK,返回nil为未执行set命令,使用get参数则返回该键原来的值,或键不存在时返回nil;

get key:获取指定key的值;

127.0.0.1:6379> set key1 1 ex 60
OK
127.0.0.1:6379> ttl key1
(integer) 56
127.0.0.1:6379> set key2 1
OK
127.0.0.1:6379> ttl key2
(integer) -1
127.0.0.1:6379> set key2 1 nx
(nil)
127.0.0.1:6379> set key3 1 nx
OK
127.0.0.1:6379> set key3 2 xx
OK
127.0.0.1:6379> set key4 1 xx
(nil)
127.0.0.1:6379> keys *
1) "key3"
2) "key2"
127.0.0.1:6379> set key5 1 ex 60
OK
127.0.0.1:6379> ttl key5
(integer) 52
127.0.0.1:6379> set key5 2 keepttl
OK
127.0.0.1:6379> ttl key5
(integer) 28
127.0.0.1:6379> set key3 3 get
"2"
127.0.0.1:6379> get key3
"3"
127.0.0.1:6379>

mset key1 value1 key2  value2:同时设置一个或多个键值对;

mget key1 key2:同时获取一个或多个给定key的值;

127.0.0.1:6379> mset key1 1 key2 2 key3 3
OK
127.0.0.1:6379> keys *
1) "key3"
2) "key2"
3) "key1"
127.0.0.1:6379> mget key1 key2 key3
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> mget key1 key2
1) "1"
2) "2"
127.0.0.1:6379> mget key1 key2 key4
1) "1"
2) "2"
3) (nil)
127.0.0.1:6379>

setnx key value:只有在key不存在时,设置key的值,设置成功返回1,设置失败返回0;

setex key seconds value:将值value关联到key,并将key的过期时间设为seconds,以秒为单位;

psetex key milliseconds value:将值value关联到key,并将key的过期时间设为milliseconds,以毫秒为单位;

127.0.0.1:6379> setnx key1 1
(integer) 1
127.0.0.1:6379> setnx key1 2
(integer) 0
127.0.0.1:6379> get key1
"1"
127.0.0.1:6379> setex key2 60 1
OK
127.0.0.1:6379> ttl key2
(integer) 55
127.0.0.1:6379>

msetnx key1 value1 key2  value2:同时设置一个或多个键值对,当且仅当所有给定key都不存在才会设置成功返回1,否则返回0;

127.0.0.1:6379> set key1 1
OK
127.0.0.1:6379> msetnx key1 1 key2 1 key3 1
(integer) 0
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> msetnx key10 1 key2 1 key3 1
(integer) 1
127.0.0.1:6379> keys *
1) "key3"
2) "key2"
3) "key1"
4) "key10"
127.0.0.1:6379>

incr key:将key中储存的数字值加一,并返回,一定是数字才能进行加一操作;

incrby key increment:将key所存储的值加上给定的增量值,并返回;

incrbyfloat key increment:将key所存储的值加上给定的浮点增量值,并返回;

decr key:将key中储存的数字值减一,并返回;

decrby key decrement:将key所储存的值减去给定的减量值,并返回;

127.0.0.1:6379> set key1 1
OK
127.0.0.1:6379> incr key1
(integer) 2
127.0.0.1:6379> incrby key1 3
(integer) 5
127.0.0.1:6379> incrbyfloat key1 3.1
"8.09999999999999964"
127.0.0.1:6379> set key2 10
OK
127.0.0.1:6379> decr key2
(integer) 9
127.0.0.1:6379> decrby key2 3
(integer) 6
127.0.0.1:6379>

setrange key offset value:用value参数覆写给定key所存储的字符串值,从偏移量offset开始;

getrange key start end:获取指定key中值的子字符串,指定区间范围的值,类似between...and的关系;

127.0.0.1:6379> set key1 abcdefghijklmn
OK
127.0.0.1:6379> getrange key1 0 3
"abcd"
127.0.0.1:6379> setrange key1 1 aaa
(integer) 14
127.0.0.1:6379> getrange key1 0 -1
"aaaaefghijklmn"
127.0.0.1:6379>

getset key value:将给定key的值设为value,并返回key的旧值;

getbit key offset:对key所存储的字符串值,获取指定偏移量上的位(bit);

append key value:如果key已经存在并且是一个字符串,append命令将value追加到key原来值的末尾;

strlen key:返回key所存储的字符串值的长度;

127.0.0.1:6379> set key1 1
OK
127.0.0.1:6379> getset key1 2
"1"
127.0.0.1:6379> append key1 hello
(integer) 6
127.0.0.1:6379> get key1
"2hello"
127.0.0.1:6379> strlen key1
(integer) 6
127.0.0.1:6379>

二 列表

List底层是个双端链表,字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边),或者尾部(右边);
List最多可以包含2^32-1个元素,4294967295,每个列表超过40亿个元素,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差;
List主要功能有push/pop等,一般用在栈、队列、消息队列等场景,left、right都可以插入添加;
如果键不存在,创建新的链表,如果键已存在,新增内容,如果值全移除,对应的键也就消失了;

lpush key value1 value2:将一个或多个值插入到列表头部
rpush key value1 value2:将一个或多个值插入到列表尾部
lrange key start stop:获取列表指定范围内的元素,start和stop是列表下表位置

127.0.0.1:6379> lpush key1 a b c d e f g
(integer) 7
127.0.0.1:6379> rpush key2 h i j k l m n
(integer) 7
127.0.0.1:6379> lrange key1 0 -1
1) "g"
2) "f"
3) "e"
4) "d"
5) "c"
6) "b"
7) "a"
127.0.0.1:6379> lrange key2 0 -1
1) "h"
2) "i"
3) "j"
4) "k"
5) "l"
6) "m"
7) "n"
127.0.0.1:6379>

lpop key [count]:移除并获取列表的前count个元素,count默认值是1
rpop key [count]:移除并获取列表的后count个元素,count默认值是1

127.0.0.1:6379> lpush key1 a b c d e f g
(integer) 7
127.0.0.1:6379> lpop key1
"g"
127.0.0.1:6379> lrange key1 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> rpop key1 2
1) "a"
2) "b"
127.0.0.1:6379> lrange key1 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
127.0.0.1:6379>

lindex key index:按照索引下标获取列表中的元素,从上到下
llen key:获取列表的长度

127.0.0.1:6379> rpush key1 a b c d e f g
(integer) 7
127.0.0.1:6379> lindex key1 0
"a"
127.0.0.1:6379> lindex key1 6
"g"
127.0.0.1:6379> lindex key1 7
(nil)
127.0.0.1:6379> llen key1
(integer) 7
127.0.0.1:6379>

lrem key count value:删除count个值为value的元素

127.0.0.1:6379> rpush key1 a a a b b b c c c d d d
(integer) 12
127.0.0.1:6379> lrem key1 2 a
(integer) 2
127.0.0.1:6379> lrange key1 0 -1
 1) "a"
 2) "b"
 3) "b"
 4) "b"
 5) "c"
 6) "c"
 7) "c"
 8) "d"
 9) "d"
10) "d"
127.0.0.1:6379> lrem key1 4 d
(integer) 3
127.0.0.1:6379> lrange key1 0 -1
1) "a"
2) "b"
3) "b"
4) "b"
5) "c"
6) "c"
7) "c"
127.0.0.1:6379>

ltrim key start_index stop_index:截取列表指定范围的值后,再重新赋值给key

127.0.0.1:6379> rpush key1 1 2 3 4 5 6 7
(integer) 7
127.0.0.1:6379> ltrim key1 2 6
OK
127.0.0.1:6379> lrange key1 0 -1
1) "3"
2) "4"
3) "5"
4) "6"
5) "7"
127.0.0.1:6379>

rpoplpush source_list destination_list:移除源列表的最后一个元素,并将该元素添加到另一个列表中返回
lset key index value:通过列表指定索引位置设置值
linsert key before/after pivot已有值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值