Redis 初试

Posted 码上猿梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 初试相关的知识,希望对你有一定的参考价值。

       关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而 nosql 数据库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql 数据库要优于关系型数据库,从安全性上而言关系型数据库要优于 nosql 数据库,所以在实际开发中一个项目中 nosql 和关系型数据库会一起使用,达到性能和安全性的双保证。

       学过数据结构的肯定对 Redis 的存储形式不会觉得陌生。

Redis中的数据采用的是 key-value 的形式进行存储的,其中的 value 支持五种类型,字符串(String)字符串列表(Lists)字符串集合(Sets)有序字符串集合(Sorted Sets)哈希类型(Hashs)

安装启动 Redis,将下载好的 zip 解压到准备好的目录里面,cmd运行里面的 redis-server.exe 文件,如下图:

image

也可像安装 jdk 一样,将 Redis 的安装目录放进 path 里面,这样启动方便点。

image

然后就可以任意目录下面运行 redis-server.exe,redis-cli.exe 等命令了。

下面是五种类型的操作命令,加粗斜体单词均为命令操作,大写字母实在写不惯。

操作String类型数据的操作如下:

命令

解释

set keyName value

存储 key-value 对,存在即覆盖
get keyName

获取 keyName 对应的 value

getset keyName newValue

获取 keyName 对应的原始 value,然后赋值为 newValue 值,

不存在对应keyName则创建并赋值为 newValue

incr keyName

keyName 对应的 value 原子性自增 1,

如果 value 不能转换为整型,就会报错

decr keyName

keyName 对应的 value 原子性自减 1,

如果 value 不能转换为整型,就会报错

incrby keyName increment

keyName 对应的 value 原子性自增 increment 个 1,

如果 value 不能转换为整型,就会报错

decrby keyName increment

keyName 对应的 value 原子性自减 increment 个 1,

如果 value 不能转换为整型,就会报错

append keyName newValue keyName 对应的原始value 后追加 newValue,
如果不存在 keyName,则创建一个keyName-newValue

表格中提到了原子性自增,这是什么意思呢?也就是下面这样的情况永远都不会发生:

【numberKey 对应的 value 为 5,客户端 a发出了 incr numberKey 命令的同时,客户端 b 也发出了 incr numberKey 的命令,服务器同时收到两个命令,得到的结果为 6】

得到的结果将会是为 7 ,这就是原子性。

操作 Lists 类型的操作如下:

命令 解释
lpush keyName value1 [valuen] 在 keyName 对应的 list 的头部插入元素【 也就是 left 左边 】
rpush keyName value1 [valuen] 在 keyName 对应的 list 的尾部插入元素【 也就是 right 右边 】
lrange keyName startIndex endIndex 获取 keyName 对应的链表指定下标对应的元素集合,
如果 startIndex 为负数,就倒着开始,
如果 endIndex 为负数,就倒着结束。

lpushx keyName value

当且仅当 keyName 存在时,在链表头部插入 value

rpushx keyName value

当且仅当 keyName 存在时,在链表尾部插入 value

lpop keyName

弹出 keyName 对应链表的头元素

rpop keyName

弹出 keyName 对应链表的尾元素

rpoplpush keyName

 

llen keyName

获取 keyName 对应链表的长度,也就是元素个数

lset keyName index newValue

设置 keyName 对应链表的 index 位置的元素

lrem keyName count value

删除 count 个值为 value 的元素,
【 如果 count 的值大于0,则从链表的头部开始遍历出最多 count 个值为 value的元素,
并删除这些元素;
如果 count 的值小于0,则从链表尾部开始遍历出最多 count 个值为 value的元素,
并删除这些元素】

以上是关于Redis 初试的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io和Redis写Realtime App 之express初试

直接初试化,拷贝初试化,值初试化

SQLite初试

爬虫初试

Android初试水

爬虫之初试