基本操作

参考教程:https://www.yiibai.com/redis/
Redis 是 Key-Value 内存数据库,操作是通过各种指令进行的,比如 SET 指令可以设置键值对,而 GET 指令则获取某一个键的值。不同的数据结构,Redis 有不同的指令,这样指令一共有几十个,下面主要介绍一些常用的指令。

Redis 对 Key 也就是键有各种各样的指令,主要有下面的指令(下面的指令中小写字符串都是参数,可以自定义):

SET key value 设置键值;
EXISTS key 判断键是否存在;
EXPIRE key seconds 设置 Key 的过期时间,过期以后Key 将被自动删除;
TTL key 获取 Key 的剩余生存时间;
DEL key 删除 Key;
TYPE key 获取 Key 对应的 Value 的类型;
通过 redis-cli 演示以上的指令如下:


127.0.0.1:6379> exists user
(integer) 0
127.0.0.1:6379> set user aiden
OK
127.0.0.1:6379> get user
"aiden"
127.0.0.1:6379> type user
string
127.0.0.1:6379> expire user 5
(integer) 1
127.0.0.1:6379> ttl user
(integer) 4
127.0.0.1:6379> ttl user
(integer) 2
127.0.0.1:6379> ttl user
(integer) -2
127.0.0.1:6379> exists user
(integer) 0

上面例子中,首先判断 user 键是否存在,接着通过 SET 设置了值,接着还使用 EXPIRE 指令设置了过期时间为 5 秒。可以看到 5 秒后,user 键就被自动删除了。

有的时候会看到输出的字符串前有 b 这样的前缀,表示字节编码的字符串,对应的还有 u'xxxxx' 这类 unicode 编码的字符串,都比较常见。

上文中已提到,Redis 还支持其他的数据结构,不仅仅是简单的字符串键值对,比如支持哈希类型的键值,这种数据结构中 Key 对应于一个哈希,而哈希又包含多个字段和相应的值。对于这种类型主要有下面的操作指令:

HSET key field value 设置名称为 key 的哈希的字段 field 为值 value;
HGET key field 获取名为 key 的哈希的字段 field;
HGETALL key 获取名为 Key 的哈希所有字段和 Value;
HKEYS key 获取名为 Key 的哈希的所有字段;
HLEN key 获取名为 Key 的哈希的字段数量;
通过 redis-cli 演示如下:


127.0.0.1:6379> exists user
(integer) 0
127.0.0.1:6379> hset user name aiden
(integer) 1
127.0.0.1:6379> hset user age 30
(integer) 1
127.0.0.1:6379> hmset user email luojin@simplecloud.cn addr chengdu
OK
127.0.0.1:6379> hgetall user
1) "name"
2) "aiden"
3) "age"
4) "30"
5) "email"
6) "luojin@simplecloud.cn"
7) "addr"
8) "chengdu"
127.0.0.1:6379> hkeys user
1) "name"
2) "age"
3) "email"
4) "addr"
127.0.0.1:6379> hget user addr
"chengdu"
127.0.0.1:6379> hlen user
(integer) 4

上面的例子中,设置了一个名为 user 的哈希。先使用 HSET 为单个字段赋值,接着使用 HMSET 为多个字段赋值。使用 HGETALL 能一次获取全部的字段和值。

Redis 还支持有序集合,有序集合可以用于快速实现排名功能,只要的操作指令如下:

ZADD key score member 将成员和对应的评分添加到有序集合中;
ZREVRANK key member 获取 member 在有序集合 key 中的排名;
通过 redis-cli 演示如下:

127.0.0.1:6379> zadd rank 100 aiden
(integer) 1
127.0.0.1:6379> zadd rank 120 lxtttx
(integer) 1
127.0.0.1:6379> zadd rank 80 jin
(integer) 1
127.0.0.1:6379> zrevrank rank aiden
(integer) 1
127.0.0.1:6379> zrevrank rank lxtttx
(integer) 0
127.0.0.1:6379> zrevrank rank jin
(integer) 2
127.0.0.1:6379> zrevrank rank not_exist
(nil)

上面例子中,我们通过 ZADD 往 rank 中添加了三个成员,最后通过 ZREVRANK 依次获取了成员的排名,可以发现排名是从 0 开始计算的,排第 0 的成员得分最高。

NoSQL数据库一Redis基本使用的更多相关文章

  1. NOSQL数据库之 REDIS

    NOSQL数据库之 REDIS 一.NOSQL 1.简介 NoSQL ,(Not Only SQL),泛指非关系型数据库. 特点: NoSQL 通常是以key-value形式存储, 不支持SQL语句, ...

  2. Python操作nosql数据库之redis

    一.NoSQL的操作 NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不 ...

  3. nosql数据库之Redis概念及基本操作

    一.概述 redis是一种nosql数据库(非关系型数据库),他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(st ...

  4. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  5. NoSQL数据库:Redis适用场景及产品定位

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...

  6. NoSQL数据库之Redis数据库:Redis的介绍与安装部署

     NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的w ...

  7. NoSQL数据库:Redis内存使用优化与存储

    Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: ●String ●Hash ●List ●Set ●Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Re ...

  8. 大数据笔记(二十一)——NoSQL数据库之Redis

    一.Redis内存数据库 一个key-value存储系统,支持存储的value包括string(字符串).list(链表).set(集合).zset(sorted set--有序集合)和hash(哈希 ...

  9. no-sql数据库之redis

    一.FAQ 1.如果用连接器连接redis不成功,报如下错误: crash-report-server replied:Request Entity Too Large 则可以先通过cmd命令查看端口 ...

  10. Linux实战教学笔记46:NoSQL数据库之redis持久化存储 (二)

    第3章 Redis数据类型详解 3.1 Redis键/值介绍 Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如"foo"的简单字符串到一个JPG ...

随机推荐

  1. 认识WebStorm-小程序框架wepy

    WebStorm是一个功能强大的IDE,适用于JavaScript开发,适合使用Node.js进行复杂的客户端开发和服务器端开发. WebStorm具有对JavaScript,HTML, CSS及其现 ...

  2. JavaScript 字符串转数字(整数,浮点数,进制转换)

    下面是使用parseFloat()方法的示例: parseFloat("1234blue"); //returns 1234.0 parseFloat("0xA" ...

  3. JavaScript--自定义事件Event

    在开发过程中,js原生事件不足以满意开发需求,需要开发者自定义事件. 一.Event Event()构造函数创建一个新的Event. event = new Event(typeArg,eventIn ...

  4. AHOI2012树屋阶梯

    这玩意不是卡特兰的经典模型吗…… 我们设方案数为f(i),则f(0)=1,f(1)=1,f(2)=2,f(3)=5,(其实到这里你再手模一个就出来了)我们把左上角的矩形删掉,则会变成下方和右方两个更小 ...

  5. 20175313 张黎仙《Java综合讲座》第十三周课堂测试总结

    目录 一.JAVA中两大类型 二.基本类型与类类型的相互转化 三.int与Integer之间的区别 四.String.StringBuffer.StringBuilder三者之间的区别 五.Array ...

  6. javascript创建对象的几种方式?

    javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用. 1.对象字面量的方式 person={ firstname:" ...

  7. Chrome和火狐插件让数以百万计用户隐私数据泄露

      https://tech.163.com/19/0721/12/EKK1PRAU00097U7R.html   网易科技讯7月21日消息,据国外媒体报道,流行浏览器诸如广告拦截等扩展功能,已经遭利 ...

  8. Mercury:唯品会全链路应用监控系统解决方案详解(含PPT)

    Mercury:唯品会全链路应用监控系统解决方案详解(含PPT) 原创: 姚捷 高可用架构 2016-08-08    

  9. 双缓冲技术局部更新原理之派生自SurfaceView

    package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.Canvas ...

  10. Rust基础笔记:闭包

    语法 Closure看上去是这样的: let plus_one = |x: i32| x + 1; assert_eq!(2, plus_one(1)); 首先创建一个绑定plus_one,然后将它分 ...