Redis基本数据结构总结前言
Redis的特点在于其读写速度特别快,因为是存储在内存中的,其非常适合于处理大数据量的情况;还有一个是其不同于其他的关系型数据库,Redis是非关系型数据库,也就是我们常说的NoSQL,其并不需要一开始去创建好表结构,可以存储自定义的数据;还有Redis是分布式的,其可以主从分离,主从复制,比如说我们不可能只用一台Redis服务器来处理客户端的请求,因为这样毕竟是存在风险,如果服务器挂掉了,那么其数据就会丢失,而且无法找回,所以存在这么一种方案:多个主服务器用来处理客户端的请求,接着多个Redis分服务器用来将主服务器的数据同步到MySQL,这样在Redis服务器挂掉的时候,我们还是可以通过访问MySQL数据库从而得到数据;
很多人说Redis和memcached比较相像,但是我没有使用过memcached,所以只是总结了别人的比较。Redis拥有5个数据结构,而memcached只有一个字符串的数据结构,其只能通过append命令将数据添加到字符串的末尾,并且把该字符串当作一个列表在使用,在删除数据的时候,redis可以直接通过remove命令将其真正的删除,但是memcached只能够通过黑名单隐藏该数据从而避免对该数据进行读取,更新。
五种数据结构
这五种数据结构分别是STRING(字符串)、LIST(列表)、SET(集合)、HASH(哈希)、ZSET(有序集合);
字符串:包括字符串、整数和浮点数;列表:一个链表,链表上面的每个结点都是一个字符串,其遵从队列的访问格式-先进先出,也就是从链表的结尾进行插入,链表的头部进行弹出;集合:里面是一个容器,他不允许存在相同的元素,每个值都是独一无二的;哈希:是一个键值对组合而成的无序散列表,其的键同样是不允许重复的;有序集合:是在集合的基础之上进行了排序;
在了解那五个操作相关的命令之前,需要先了解关于键的相关的命令:
Key
DEL key
移除给定的一个或者多个key。
KEYS pattern
查找符合给定模式的key,注意其匹配的模式怎么使用,包括了?、*、[]等等。
RANDOMKEY
从当前数据库中随机返回一个key。
EXPIRE key seconds
为给定的key设置存活时间,时间一过则把对应的key进行销毁,注意单位为秒。
TTL key
获取key剩余的存活时间,单位为秒,和上面的命令相对应,如果该key不存在或者是过期的话,则返回-2/-1(在不同数据库返回的值不一样?)。
MOVE key db
将key移动到指定的db,默认情况下使用的是0号数据库,注意要移动到相应的数据库(SELECT db)才能看到。
RENAME key newkey
将key更改为新的key,注意如果newkey在数据库中已经存在,那么旧的key的数据会把已经存在的新的key给覆盖掉。
TYPE key
返回指定的key的类型,如果不存在则返回的是none,而不是nil(进行操作才返回的)。
OBJECT REFCOUNT key |OBJECT ENCODINGkey |OBJECT IDLETIMEkey
分别返回key所引用的次数,key对应的编码,key空闲的时间(没有读也没有写,单位为秒)。
RENAMENX key newkey
在RENMAE的基础上判断key是否存在,更加的安全。
EXPIREAT key timestamp
设置时间戳。
PERSIST key
移除给定key的生存时间,也可以使用EXPIRE 来重置。
SORTkey [BYpattern] [LIMIToffset count] [GETpattern] [ASC|DESC] [ALPHA] [STOREdestination]
这个方法只能用在LIST、SET、ZSET上,这里的pattern和之前的keys的pattern是一样的,LIMIT则是用来限制返回的偏移量和数量,GET是获取返回的指定的key的内容,ASC是升序、DESC是降序, ALPHA则是用在对字符串进行排序的时候,STORE则是指定存储的地方,可以指定到一个key上,这样就可以通过GET来访问到。
STRING
GET key
获取存储在给定键的值。
MGET key...
获取多个指定的键值。
GETRANGE key start end
获取指定范围的键值,支持反向操作,如果end超出实际范围,则忽略,返回全值。
GETSET key value
集合了GET和SET的功能,不过其返回的是该键被设置之前的值,但是其的值已经发生了改变 ,注意如果之前没有该键,则返回nil。
SET key value
设置存储在给定键中的值。
SETNX key value
注意在key已经存在的情况下,不进行任何操作,也就是说 SET if key not exist;可能存在一个锁的问题。
SETEX key seconds value
集合了SET和EXPIRE的功能,如果key存在,则覆盖掉。
SETRANGE key offset value
从偏移量开始设置,注意的是当这个value不足以把之前的value给覆盖掉时,那么仍然会显示之前没有被覆盖掉的值。这里返回的是字符串总的长度。如果空白字符串不存在的话,则相当于在空白字符串上进行操作。
MSET key value ...
可以同时设置多个键值对,如果不像覆盖掉key的话,可以使用MSETNX。
MSETNX key value...
和SETNX的作用是一样的,这里只有全部key都设置成功,才能返回1,只要有一个key已经存在,就会返回0。
APPEND key value
追加字符串值,返回新字符串长度,可以添加空字符串,返回的是原来的长度。
STRLEN key
返回字符串长度。
DECR key
将key的值减一,如果不存在key,则会先进行SET,并且将该键值初始化为0。该命令只能使用在数字上面。
DECRBY key decrement
在上面的基础之上减去指定的值。
INCR key 和INCRBY key increment
同DECR和DECRBY
SETBIT key offset set_or_clean
将字符串看作是二进制,并且将字符串指定偏移量的二进制位设置为指定值,可以是set或者clean。同样的,如果key不存在,则帮其进行设置。
GETBIT key offset
把字符串看作是二进制串,并且返回二进制串中指定偏移量的二进制位的值。
LIST
在LIST中,不需要进行相应的SET操作,如果其不存在,其会自动创建,并且初始化为空列表。
LPUSH key value...
把多个键值加入到列表key的表头中,返回列表的长度。
LPUSHX key value...
在上面的基础之上,如果key不存在,则不进行任何操作,即 LPUSH if key exists。
RPUSH key value
插入到表尾。
RPUSHX key value
类似LPUSHX。
LPOP key
移出并且返回头元素。
RPOP key
移出并且返回尾元素。
BLPOP key... timeout
相当于LPOP的阻塞版本,如果其列表没有元素的时候,则会一直阻塞到列表中存在值并且进行LPOP操作,我们还可以设置超时时间,如果是0的话,则表明其可以阻塞到无限时间长。
BRPOP key... timeout
参照BLPOP。
LLEN key
返回列表的长度。
LRANGE key start stop
返回只等区间长度的元素,注意stop要大于start,否则返回一个空列表。
LREM key count value
删除列表中和value相等的元素。这个取决于count的值,如果为正数,正向搜索删除,如果为负数,反向搜索删除,如果等于0,则全部删除;返回被删除的个数。
LSET key index value
设置指定下标的值为新的value。
LTRIM key start stop
将指定返回值保留下来,其余均删除。
LINDEX key index
返回指定下标index的值。
LINSERT keyBEFORE|AFTERprivot value
将key添加到privot之前或者之后,如果privot不存在或者列表为空,则不进行任何操作。如果成功则返回列表长度。
RPOPLPUSH source destination
将source中的尾元素弹出并且插到destination列表的头元素的位置上,可以简单的理解为其进行了插队的操作;如果destination不存在则默认设置为空列表,但是如果source不存在则不进行任何的操作。
BROPLPUSH source destination timeout
上面版本的阻塞版本,如果timeout为0,则可以无限期阻塞。

Redis基本数据结构总结之STRING和LIST的更多相关文章

  1. Redis 基础数据结构之一:string(字符串)

    Redis 有 5 种基础数据结构,分别为:string (字符串).list (列表).set (集合).hash (哈希) 和 zset (有序集合),Redis存储数据的结构是键值对形式的. 首 ...

  2. Redis数据结构(一)-Redis的数据存储及String类型的实现

    1 引言 Redis作为基于内存的非关系型的K-V数据库.因读写响应快速.原子操作.提供了多种数据类型String.List.Hash.Set.Sorted Set.在项目中有着广泛的使用,今天我们来 ...

  3. Redis基本数据结构总结之SET、ZSET和HASH

    Redis基本数据结构总结 前言 Redis的特点在于其读写速度特别快,因为是存储在内存中的,其非常适合于处理大数据量的情况:还有一个是其不同于其他的关系型数据库,Redis是非关系型数据库,也就是我 ...

  4. 聊一聊Redis的数据结构

    如果没有记错的话,应该是在两个月前把 我们经常看到此类的文章: Redis的五种数据结构 Redis的数据结构以及对应的使用场景 其实以数据结构这个词去说明Redis的String.Hash.List ...

  5. Redis学习——数据结构介绍(四)

    一.简介 作为一款key-value 的NoSQL数据库,Redis支持的数据结构比较丰富,有:String(字符串) .List(列表) .Set(集合) .Hash(哈希) .Zset(有序集合) ...

  6. Redis的数据结构、通用操作及其特性

    Redis的数据结构 五种数据类型: 字符串(String).字符串列表(list).字符串集合(set).有序字符串集合(sorted set).哈希(hash) key定义的注意点: 不要过长,不 ...

  7. Redis学习笔记之Redis基本数据结构

    Redis基础数据结构 Redis有5种基本数据结构:String(字符串).list(列表).set(集合).hash(哈希).zset(有序集合) 字符串string 字符串类型是Redis的va ...

  8. 你真的懂redis的数据结构了吗?redis内部数据结构和外部数据结构揭秘

    Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 很多人面试时都遇到过这种场景吧? 其实除了上面的几种常见数据结构,还需要加上数据结 ...

  9. Redis的数据结构

    Redis的数据结构 redis是一种高级的key-value的存储系统,其中value支持五种数据类型. 字符串(String) 哈希(hash) 字符串列表(list) 字符串集合(set) 有序 ...

随机推荐

  1. WebGIS中使用ZRender实现前端动态播放轨迹特效的方案

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要在地图上以时间轴方式播放人员.车辆在地图上的历史行进 ...

  2. C语言中关于三目运算符的注意事项

    C语言中常见的条件运算符?:在运算符优先级中排行13.部分时候可以代替if--else语句,使代码更加简洁.但是更容易隐含一些不易觉察的错误. 最近接了一个项目,本来通信协议部分很简单,自己的STM3 ...

  3. phpcms课堂笔记

    获取父分类下面的子分类 {loop subcat(77) $k $v}{php $subcatid[] = $k;}{/loop}<?php $subcatid = implode(',', $ ...

  4. ue4构建光照失败问题与解决

    不知从哪天开始,我的ue4.13就突然无法成功构建光照了, 症状为:虽然swarm连接到了100%,然而之后就卡住一动不动,一看看log是连接tcp什么agent什么失败的. 虽然把所有物体都设置成非 ...

  5. JavaScript动画1-速度动画

    动画实际上就是在一定时间内,改变一个元素的某些属性. 这里简单实现一个JavaScript运动的框架.主要包括: 速度动画(改变left.right.width.height.opacity) 缓冲运 ...

  6. Mycil命令行MySQL语法高亮和自动补全工具

    MyCli 是MySQL,MariaDB和Percona的命令行界面,具有自动完成和语法高亮的功能. 其效果如图: 那么我们应该怎么安装它呢,这里附上windows的安装方法. 在命令行下输入 pip ...

  7. openlayers应用(二):加载百度离线瓦片

    上一篇文章介绍了使用openlayers3加载百度在线地图,对某些项目或应用场景比如不允许上外网的单位,某些项目只针对一定区域地图加载应用,比如一个县的地图,可以采用下载百度瓦片地图,在服务器或者本机 ...

  8. 设计模式的征途—5.原型(Prototype)模式

    相信大多数的人都看过<西游记>,对孙悟空拔毛变出小猴子的故事情节应该都很熟悉.孙悟空可以用猴毛根据自己的形象复制出很多跟自己一模一样的小猴兵出来,其实在设计模式中也有一个类似的模式,我们可 ...

  9. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  10. C# Redis学习系列三:Redis配置主从

    Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...