Redis常用五大数据类型(详解)正在更新

一,key

1,查看当前库所有key:

key *

在测试之前先键入几个值

 set k1 mary
 set k2 jack
 set k3 frank
 

  keys *      

Redis常用五大数据类型(详解)正在更新_第1张图片

 2,判断是否包含某个key

exists key

Redis常用五大数据类型(详解)正在更新_第2张图片

3,查看键的类型

type key

 24cf98bf9b7847c1b32e6bdf3ed558a3.png

 4,删除指定key的数据

del key      删除指定key的数据
unlink key   根据value选择非阻塞删除 

Redis常用五大数据类型(详解)正在更新_第3张图片

539738b77aa0434c8219f19ad6c574ec.png

效果是一样的,但是del key 是直接删除 unlink key是非阻塞删除,不会直接删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。

5,为key设置过期时间

expire key 10 指定key10秒删除

 46668c7cbbee4678a798c967ef763464.png

 6,查看key还有多少秒过期

-1表示永不过期,-2表示已经过期

Redis常用五大数据类型(详解)正在更新_第4张图片

7,切换数据库

redis默认有16个数据库,0-15库,默认选择0号库

 c3722bd58637425ebe5351452adcced2.png

8,查看当前库有多少key

因为我们之前的操作删掉了key,现在重新添加几个

Redis常用五大数据类型(详解)正在更新_第5张图片

查看当前库的key的数量 

 ffa5042669914eeaae850c30aebf1b51.png

 9,清空当前库

flushdb

9d6cf5a84fa742be8000ead5ec1bef33.png

10,通杀所有库

flushall

e58286957d784b5888792fb4c91b7c58.png

二,Redis字符串类型(String)

1,简介

String 是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。

String类型是Redis最基本的数据类型,一个Redis 中字符串value最多可以是512M。

2,常用命令

1,添加键值对

set  

 2,获取值

get key

3,追加字符 

append  

Redis常用五大数据类型(详解)正在更新_第6张图片

 4,获取值的长度

strlen key

5,只在key不存在的时候设置值

setnx key

6,将key中存储的数字值+1,-1

incr  +1
decr  -1

仅对数字值有效果,incr,如果为空,新增值为1;decr,如果为空,新增值为-1

Redis常用五大数据类型(详解)正在更新_第7张图片

 7,将key中存储的数字值+ - 指定步长

incrby key 步长
decrby key 步长

Redis常用五大数据类型(详解)正在更新_第8张图片

原子性 

 所谓原子操作是指不会被线程调度机制打断的操作; 

这种操作一旦开始,就一直运行到结束,中间不会有任何context switch(切换到另一个线程)。

 (1)在单线程中,能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间。

(2)在多线程中,不能被其它进程(线程)打断的操作就叫原子操作。

Redis 单命令的原子性主要得于Redis的单线程。

8,mset ,mget,设置,取多个key和value

mset k1 v1 k2 v2 k3 v3
mget k1 k2 k3

Redis常用五大数据类型(详解)正在更新_第9张图片

9,msetnx设置不存在的key,若key存在则设置不成功 

Redis常用五大数据类型(详解)正在更新_第10张图片

10,getrange start end截取key从start到end结尾的字符串

Redis常用五大数据类型(详解)正在更新_第11张图片

 11,setrange 起始位置 value

Redis常用五大数据类型(详解)正在更新_第12张图片

12,setex key 过期时间  value ,设置key的值的时候设置过期时间

Redis常用五大数据类型(详解)正在更新_第13张图片

13,getset k v 以新值换旧值

Redis常用五大数据类型(详解)正在更新_第14张图片

3,数据结构

String 的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配.

Redis常用五大数据类型(详解)正在更新_第15张图片

如图中所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。

三,Redis列表(List)

1,简介

单键多值

redis列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边)或者尾部(右边)。

他的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

Redis常用五大数据类型(详解)正在更新_第16张图片

 2,常用命令

1,lpush/rpush ....从左边/右边插入一个或多个值。

左插

Redis常用五大数据类型(详解)正在更新_第17张图片

右插

Redis常用五大数据类型(详解)正在更新_第18张图片

 注意:插入的过程如下图。

左插:

a
b a
c b a
d c b a

右插:

a
a

b

a b c
a b c d

2,lpop/rpop 从左边/右边吐出一个值。值在键在,值光键亡

3,rpoplpush 从k1列表右边吐出一个值,插到k2列表左边

下面拿左插入举例子:

Redis常用五大数据类型(详解)正在更新_第19张图片

 4,lrange key start end 按照索引下标得元素(从左到右)

略,上方有展示

注意:lrange key 0 -1可以取到所有值

5,lindex key index按照索引下标获取元素(从左到右)

Redis常用五大数据类型(详解)正在更新_第20张图片

6,llen key 获取列表长度

Redis常用五大数据类型(详解)正在更新_第21张图片

7,linsert key before value newvalue 在value的后边插入newvalue插入值

Redis常用五大数据类型(详解)正在更新_第22张图片

8,lrem key n value 从左边删除n个value(从左到右)

Redis常用五大数据类型(详解)正在更新_第23张图片

9,lset key index value 将列表key下标为index的值换成value

Redis常用五大数据类型(详解)正在更新_第24张图片

3,数据结构

List的底层数据结构是快速链表quickList

首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表。他将所有的元素紧挨着一起存储,分配的是一块连续的内存。

当数据量比较多的时候才会改成quickList。

因为普通的链表需要的附加指针空间太大,会比较浪费空间,比如这个列表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next。

Redis将链表和zipList结合起来组成了quickList。也就是将多个zipList使用双向指针串起来使用。这样既满足了快速插入删除性能,又不会出现太大的空间冗余。

四,Redis集合(Set)

1,简介

Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动重拍的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择

正在更新.......

你可能感兴趣的:(redis,redis,数据库,缓存)