Redis五大数据类型

Redis五大数据类型

补充:经常使用命令html

Ping       ping下redisredis

Dbsize   查看当前数据库的key的数量数据库

Select 1   切换到下标为1的数据库中安全

Flushdb     清空当前库keyapp

Flushall   清空所有库keypost

 

Redis键的操做(经常使用):

查看当前数据库的全部key:性能

Keys *大数据

 

判断当前key是否存在:spa

exists namehtm

 

将当前key移动到2号库中:

Move name 2

 

设置key在6秒后过时:

expire name 6

 

查看当前key还有多久过时

ttl name

 

查看当前key是什么结构的类型

type name

 

 

String 类型(经常使用)

String是redis最基本的类型,能够理解成一个key对应一个value。

String类型是二进制安全带额,意思是redis的string能够包含任何数据,好比jpg图片或者序列化对象。

一个redis中字符串value最多能够是512M

 

操做:

set name oyr:    给键name设置值为oyr

 

get name:       获取键name的值

 

del name:       删除建为name值

 

append name 123:  name对应的值后面追加123

 

strlen name:    获得当前name对应的值的长度

 

incr age:age+1    必定要是数字才能操做

 

incrby age 10:age+10

 

decr age:age-1    必定要是数字才能操做

 

decrby age 10: age-10

 

setex name 10 oyr:

set with expire)

设置key为name,过时时间为10秒,值为oyr

 

sexnx name ooo:

sex if not exist)

设置键位name,值为ooo,只有不存在的时候才会设置进去

 

mset k1 v1 k2 v2 k3 v3:    一次设置多个值

 

mget k1 k2 k3:        一次获取多个值

 

msetnx k1 v1 k2 v2 k3 v3:    一次设置多个值,若是有一个键是存在的那么所有失效。

 

 

Hash 类型(经常使用)

Redis hash 是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

相似Java里面的Map<String,Object>

K-V模式不变,但V是一个键值对

 

操做:

1)hset

hset user name oyr      给键user的name属性设置值

 

 

2)hget

hget user name        获取键user的name值

 

3)hmset

hmset user age 18 sex nan    同时设置多个值

 

4)hmget

hmget user name age sex    同时获取多个属性值

 

5)hgetall

hgetall user         获取键user中的全部键和值

 

6)hdel

hdel user name      删除键user中的name属性

 

7)hlen

hlen user          获取键user下有几个属性

 

8)hexists

hexists user nane      判断键user下是否有name属性

 

9)hkeys

hkys user          获取键user下的全部属性

 

10)hvals

hvals user            获取键user下的全部值

 

11)hsetnx

hsetnx user name "oyr"    若是user对象里存在 name 属性,则不作操做,不存在,建立并赋值。

 

(12)hincrby

hincrby  user age 10      给键user里的age 属性添加10

 

 

Lists 类型(双向链表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素导列表的头部(左边)或者尾部(右边)。

它的底层实际是个链表并且是双向链表。注意:先进后出,后进先出

 

操做:

 

lpush list1 a b c d    list1链表添加数据a b c d,从头部添加

 

lrange list1 0 -1      获取list1链表全部数据

 

rpush list2 1 2 3    给链表list2尾部插入元素

 

lpop list1      出栈 mylist,出栈后,元素消失(从头部出)

 

rpop list1      出栈 mylist,出栈后,元素消失(从尾部出)

 

lindex list1 3    获取链表的3索引位置的值

 

list1        获取list1 链表的长度

 

lset list2 2 s    给链表索引2的位置设置值为 s

 

lrem list3 2 d    删除链表2个d元素

 

ltrim list2 2 5    从索引2截取到索引5,其余元素被遗弃

 

linsert list2 before/after s u    在链表f元素前面或者后面插入 h 元素

 

rpoplpush list1 list2       list1链表中尾部出站,出栈元素添加给list2链表

 

lists性能总结:

它是一个字符串链表,left、right均可以插入添加;

若是键不存在,建立新的链表;

若是键已存在,新增内容;

若是值全移除,对应的键也就消失了。

链表的操做不管是头和尾效率都极高,但假如是对中间元素进行操做,效率就很惨淡了。

 

 

Set 类型(不能重复)

Redis的Set是string类型的无序集合。它是经过HashTable实现实现的,

 

操做:

 

sadd set1 a b c d       set1集合添加元素

 

smembers set1        查看set1集合的全部元素

 

sismember set1 a      判断set1集合中是否有a元素

 

scard set1        获取集合set1 的元素个数

 

srem set1 a      删除集合set1中的元素(能够一次删除多个)

 

srandmember set2 3    在集合set2中随机出3个元素

 

diff set3 set4      差集,取set3中存在可是set4中不存在的元素

 

sinter set3 set4      交集,取set3和set4都存在的元素

 

sunion set3 set4      并集

 

 

Sortedsets 类型

 

Redis zset 和 set 同样也是string类型元素的集合,且不容许重复的成员。

不一样的是每一个元素都会关联一个double类型的分数。

redis正是经过分数来为集合中的成员进行从小到大的排序。zset的成员是惟一的,但分数(score)却能够重复。

 

 

操做:

 

zadd zset1 60 a 70 b 80 c 90 d 100 f    zset1 有序集合设置元素,同时设置元素分数。

 

zrange zset1 0 -1 withscores      查询集合全部元素,0:开始,-1:结,withscores显示分数

 

zrange zset1 0 2            查询集合下标0到下标2的元素

 

zcount zset1 70 90           统计分数在 70 到 90 之间元素,闭区间。

 

zcount zset1 (70 90       统计分数在70到90之间元素,左边开区间,右边闭区间

 

zcount zset1 -inf +inf      统计全部元素  -inf:最小值 +inf:最大值

 

根据分数查询12到19集合,从坐标0开始。每页显示1条,12-19都是闭区间:

zrangebyscore mysset 12 19 withscores limit 0 1

 

zrem zset1 a b        集合删除元素a b

 

 

五大数据类型操做结束

转载于:https://www.cnblogs.com/itoyr/p/10069329.html