设为首页 加入收藏

TOP

KV型内存数据库Redis(一)
2023-07-26 08:18:04 】 浏览:320
Tags:Redis

Redis采用单线程数据操作+非阻塞IO的模型,非阻塞IO提供了较高的IO性能,单线程操作保证了单条指令的原子性。


Redis使用简单灵活性能优异,常被用作缓存,分布式锁或者消息队列。


非特殊说明, 本文以Redis 3.0为标准进行介绍。


sudo apt-get install redis-server


并安装客户端:


sudo apt-get install redis-tools


进入Redis客户端


redis-cli


登录远程Redis服务


redis-cli -h host -p port -a password


通常情况下,在Redis中若key或field不存在则会作为空集合处理(写操作会将先初始化为空集合)不会抛出错误,若key指向了其它类型则会出现错误。


Redis中的线性集合(list和zset)的下标以0为底,且支持负数下标。即0指向第一个元素,1指向第二个元素,-1指向最后一个元素,-2指向倒数第二个元素。


线性集合通常用start和stop参数表示一个子序列,序列为闭区间即包含start和stop指向的元素(这点与很多编程语言不同)。


string是Redis中的基本类型。 除了增删改查之外,Redis提供了STRLEN,APPEND等简单字符串操作。


Redis没有专用的整数类型,所以key内储存的string可以被解释为十进制64位有符号整数进行计算。


字符串也可以解释为双精度浮点数,在作为浮点数时计算结果时最大保留17位小数,自动去除小数部分尾随的0,必要时还会将浮点数改为整数(比如3.0会被保存成3)。 浮点数可以使用像2.0e73e590e-2这样的指数符号来表示。


string的算术操作可以让我们方便的实现锁和计数器等功能。


将key指向字符串值value,若不存在key则新建键值对,若key存在默认情况下会覆盖旧值,无视旧值的类型。


SET设置成功会返回OK, 失败会返回nil。


SET key value NX只有在key不存在时才会设置,若key已存在则不进行任何操作。


SET key value XX只有key存在时才会设置, 若key不存在则不进行任何操作。


SET key value EX second: 设置键的过期时间为 second 秒。


SET key value PX millisecond: 设置键的过期时间为 millisecond 毫秒。


因为SET命令可以通过参数来实现SETNX、SETEX和PSETEX三个命令的效果,Redis官方称可能在将来的版本中废弃并最终移除SETNX、SETEX和PSETEX这三个命令。


返回key所关联的字符串值,若key不存在返回nil, 若key指向其它数据类型则会返回一个错误信息。


返回所有(一个或多个)给定key的值。若其中有某个key不存在或指向其它类型,那么这个key返回nil。


同时设置一个或多个key-value对, 如果某个给定key已经存在,那么MSET会用新值覆盖原来的旧值。该命令不会返回错误信息,总是返回OK。


和其它指令一样,该操作是原子性的。


同时设置一个或多个key-value对, 如果某个给定key已经存在,那么MSETNX不会设置任何一个key-value。


该操作是原子性的,要么全部设置要么全不被设置。


返回key指向的类型:


INCR命令将key中储存的数字值增1, 若key不存在则先被初始化为0,然后再执行操作。 返回操作后key指向的值。


若值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。


类似地有DECR命令,用于将存储的数字减1。


将key所储存的值加上增量value, 返回操作后的值。value可以为0或负值。


若值包含错误的类型,或字符串类型的值不能表示为整数,那么返回一个错误。


类似地有DECRBY用于将存储的数字减去给定值。


将key所储存的值加上浮点增量value, 返回操作后的值。value可以为0或负值。


若值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。


目前版本的Redis中没有DECRBYFLOAT指令,可以使用加负数进行减运算。


本节介绍对key通用的操作。


删除给定的一个或多个key, 不存在的key将会忽略返回被删除的key的数量。


查找所有符合给定模式pattern的key:


检查给定key是否存在, 若存在返回 1,否则返回 0。


将key改名为newkey, 当newkey已经存在时,RENAME命令将覆盖旧值。成功时返回OK,失败时返回一个错误。


当key和newkey相同,或者key不存在时,返回一个错误。


当newkey不存在时, 将key改名为newkey。成功时返回1,若newkey已存在返回0。


为给定key设置生存时间(TTL),当key过期时(生存时间为0),它会被自动删除。


使用SET命令等覆盖一个键值对将会移除TTL, 但是INCR,LPUSH, HSET等命令不会修改生存时间。


RENAME命令不会修改生存时间,若RENAME key key2命令使得key覆盖了带有TTL的key2, 那么新的key2的生存时间设置和原来的key相同。


PEXPIRE命令和EXPIRE命令的作用类似,但是它以毫秒为单位设置key的生存时间。


EXPIREAT的作用和EXPIRE类似,都用于为key设置生存时间。


不同在于EXPIREAT命令接受的时间参数是UNIX时间戳。


PEXPIREAT和EXPIREAT命令类似,但它的参数是以毫秒为单位的unix时间戳。


以秒为单位,返回给定 key 的剩余生存时间,当key不存在时,返回-2, 当key存在但没有设置剩余生存时间时,返回-1。


PTTL命令类似于TTL命令,但它以毫秒为单位返回key的剩余生存时间。


移除给定key的生存时间设置,使其成为永久的key。


当生存时间移除成功时,返回1。如果key不存在或key没有设置生存时间,返回0。


列表(list)是一个线性容器,可以根据下标访问元素。


Redis中list的元素只能是字符串,不支持其它类型。


将一个或多个值value插入到列表key的头部(左侧),返回操作后列表的长度。


如果key不存在,将会创建一个空列表并执行LPUSH操作,当key存在但不是列表类型时,返回一个错误。


对空列表arr执行LPUSH arr a b c指令后,arr的内容为c b a。相当于原子性的执行了LPUSH arr a, LPUSH arr b, LPUSH arr c三条指令。


将一个或多个值value插入到列表key的尾部(左侧),返回操作后列表的长度。


如果key不存在,将会创建一个空列表并执行RPUSH操作,当key存在但不是列表类型时,返回一个错误。


对空列表arr执行RPUSH arr a b c指令后,arr的内容为a b c。相当于原子性的执行了RPUSH arr a, RPUSH arr b, RPUSH arr c三条指令。


返回列表的长度,若key不存在返回0, 若key指向其它类型则返回一个错误。


返回列表key中指定区间内的元素,区间以偏移量start和stop指定。


下标以0为底,即0表示列表中的第一个元素, 1表示第二个元素。也可以使用负数下标,-1表示最后一个元素, -2表示倒数第二个元素。


stop下标也在LRANGE命令的取值范围之内(闭区间),LRANGE arr 0 2会返回下标为0,1,2的三个元素。


超出范围的下标值不会引起错误,如果start比列表的

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Redis 应用实战 下一篇为什么MySQL默认事务隔离级别是RR

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目