一.什么是redis ?

其官方介绍是: Redis is what is called a key-value store, often referred to as a NoSQL database.

Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server sincekeys can contain stringshasheslistssets and sorted sets.

意思是:redis是一个key-value (键值对) 存储的NoSQL数据库,是开源的,可以用来存储的key的类型分为字符串,哈希,list,set和可排序的set.

二.如何用?

1.下载redis

需要安装一下redis,最新的版本为2.8.9,下载地址为:Redis 2.8.9 is the latest stable version

2.解压redis

下载完成后,ubuntu下执行命令进行解压:

tar -zxvf redis-2.8..tar.gz 

3.启动redis

cd redis-2.8.
#首先,编译redis
make
#其次,启动redis
cd src
./redis-server

4.连接redis

    cd src
./redis-cli
redis> ping
PONG
redis> set foo bar
OK
redis> get foo
"bar"
redis> incr mycounter
(integer)
redis> incr mycounter
(integer)
redis>

连接好了以后就可以使用redis了.

三.redis常用命令

如果不想安装redis,可以直接在线学习redis:http://try.redis.io/

同时,也可以直接查看其命令:http://redis.io/commands

1.第一组命令(set get ):

  • set命令
  • get命令
  SET server:name "fido"
GET server:name => "fido"

这样就进行了赋值和取值,server:name就是key,value就是"fido".

2.第二组命令(自增.自减):

  • INCR命令
  • DEL命令
  • DECR命令
127.0.0.1:> set a
OK
127.0.0.1:> decr a
(integer)
127.0.0.1:> incr a
(integer)
127.0.0.1:> del a
(integer)
127.0.0.1:> get a
(nil)

INCR是自增命令,默认每执行一次INCR命令自增1,而DECR则是自减命令,每次自减1,del则是删除指定的key.

INCR是原子性命令,对于其数据修改,要么全都执行,要么全都不执行.

3.第三组命令(超时):

  • EXPIRE命令
  • TTL命令
    SET resource:lock "Redis Demo 1"
EXPIRE resource:lock
TTL resource:lock =>
SET resource:lock "Redis Demo 2"
TTL resource:lock => -

EXPIRE命令是设置超时命令的,即如上面的例子,resource:lock只能存在120秒,超时即被删除.

TTL命令是查看key剩余存活时间.

4.第四组命令(list):

  • RPUSH
  • LPUSH
  • LLEN
  • LRANGE
  • LPOP
  • RPOP
    RPUSH friends "Alice"
RPUSH friends "Bob"

RPUSH是每次都将value添加到list的最后面.

 LPUSH friends "Sam"

LPUSH 是每次都将value添加到list的最前面.

    LRANGE friends  - => ["Sam","Alice","Bob"]
LRANGE friends => ["Sam","Alice"]
LRANGE friends => ["Alice","Bob"]

LRANGE key 0 -1表示查看所有list的value,如果是大于-1的数值,例如0 1,则表示显示下表为0到1的值.

由lrange输出可以看出,lpush 'sam'是后添加的数据,却排到了最前面.

  LLEN friends => 

LLEN key 表示的输出list的长度.

 LPOP friends => "Sam"

LPOP表示删除第一条数据,并且回显删除的数据,与上面的LPUSH相反,这里要特别注意,别搞混了.

  RPOP friends => "Bob"

RPOP则与LPOP相反是删除list最后一条数据.

 5.第五组命令(set):

set命令与list命令非常相似,但不同的是,其是无序的,值只能出现一次的,值不能重复出现,key和value是一对多的关系.

  • SADD
  • SREM
  • SISMEMBER
  • SMEMBERS
  • SUNION
    SADD superpowers "flight"
SADD superpowers "x-ray vision"
SADD superpowers "reflexes"

SADD命令即是将值添加到set中.

SREM superpowers "reflexes"

SREM表示删除set中的指定的value.

    SISMEMBER superpowers "flight" => true
SISMEMBER superpowers "reflexes" => false

sismember判断值到底是不是SET中的,是就返回true,不是,就返回false.

SMEMBERS superpowers => ["flight","x-ray vision"]

SMEMBERS返回所有的value.

    SADD birdpowers "pecking"
SADD birdpowers "flight"
SUNION
superpowers birdpowers => ["flight","x-ray vision","pecking"]

SUNION合并两个SET集体,由于set是无序的,所以这里顺序是不确定的.

6.第六组命令(sorted set):

  • ZADD
  • ZRANGE
    ZADD hackers  "Alan Kay"
ZADD hackers "Grace Hopper"
ZADD hackers "Richard Stallman"
ZADD hackers "Yukihiro Matsumoto"
ZADD hackers "Claude Shannon"
ZADD hackers "Linus Torvalds"
ZADD hackers "Sophie Wilson"
ZADD hackers "Alan Turing"

ZADD将数据添加到有序set集合中,进行自动排序.

ZRANGE hackers   => ["Claude Shannon", "Alan Kay","Richard Stallman"]

ZRANGE表示输出指定范围的数据.

7.第七组命令(HASH)

  • HSET命令
  • HGETALL命令
  • HMSET命令
127.0.0.1:> hset user: name 'amosli'
(integer)
127.0.0.1:> hset user: email 'hi_amsli@outlook.com'
(integer)
127.0.0.1:> hset user: password ''
(integer)
127.0.0.1:> hgetall user:
) "name"
) "amosli"
) "email"
) "hi_amsli@outlook.com"
) "password"
) ""

HASH与JAVA中的Map集合非常类似,一个key对应一个value.

HSET命令就是set指定的key和value.

HGETALL命令即是指获取所有的key-value

127.0.0.1:> hmset user: name 'hiamos' password '' email 'hi_amosOKutlook.com' 

HMSET一次性设置多个key-value

8.第八组命令

  • HINCRBY
  • HDEL
    HSET user: visits 
HINCRBY
user: visits =>
HINCRBY user: visits =>
HDEL
user: visits
HINCRBY user: visits =>

HINCRBY可以理解为加法,将一个值加上另一个值.

HDEL则是删除.

9.第九组命令

  • flushall
  • brpop
  • keys
  • client list

flushall:将所有数据清空.

brpop:阻塞,只到有数据返回,有数据时删除list中的最后一条并返回.

keys:查询匹配规则的所有key

redis> MSET one  two  three  four
OK
redis> KEYS *o*
) "one"
) "four"
) "two"
redis> KEYS t??
) "two"
redis> KEYS *
) "one"
) "three"
) "four"
) "two"

client list:列出client的相关内容

127.0.0.1:> client list
addr=127.0.0.1: fd= name= age= idle= flags=N db= sub= psub= multi=- qbuf= qbuf-free= obl= oll= omem= events=r cmd=client

半小时快速了解redis,基于ubuntu 12.04 + redis 2.8.9的更多相关文章

  1. Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]

    1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...

  2. ubuntu 12.04 安装 redis

    原文地址:http://ijonas.com/software-development/nosql/412/ 1 Installing Redis 2.6.x on Ubuntu 12.04 and ...

  3. Ubuntu 12.04 安装Redis并设置主从复制

    今天想在Ubuntu上安装一个Redis服务器并配置Master-Slave,一开始懒得连VPN就查了一些国内的文章,不知道是没有亲自验证过的转载文章,还是版本问题造成的,发现按照步骤都没能成功完成配 ...

  4. ubuntu 12 install redis

    ubuntu 12 install redis 今天开始写数据server部分,大家初步的方案是用redis+mysql 所以要安装,下面记录安装的基本过程,留做后续参考 unbuntu 12 已经支 ...

  5. GAMIT 10.50在Ubuntu 12.04系统下的安装

    转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/162.html?1456480908 摘要:GAMIT/GLOBK是一套安装于Unix/L ...

  6. ubuntu 12.04内核升级到3.13.1

    1.背景:今天上午连接Android调试之后,突然又出现了无法识别usb的问题.具体表现为:除usb无线网卡有效外,其他usb设备包括usb鼠标.u盘.android手机插上后都没反应.dmesg一直 ...

  7. Ubuntu 12.04下搭建Qt开发环境

    http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...

  8. 【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码

    原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码       ...

  9. 基于Ubuntu 14.04 LTS编译Android4.4.2源码

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS ...

随机推荐

  1. centos 解压jdk安装包方式安装jdk 出现 java/lang/NoClassDefFoundError: java/lang/Object 错误

    安装完JDK ,设定环境变量后出现这个错误: [root@localhost lib]# javacError occurred during initialization of VMjava/lan ...

  2. JS 学习(四)对象

    对象 在JS中,对象是数据(变量),拥有属性和方法. JS中所有事物都是对象:字符串.数字.数组.日期等. 对象是拥有属性和方法的特殊数据类型. 属性是与对象相关的值. 方法是能够在对象上执行的动作. ...

  3. Aptana插件安装方法

    本人用的是Zend Studio10.0,在开发项目过程中,发现该软件无法对css和js进行代码提示,这样用起来很不方便,然后在网上找了一下Aptana插件 进入Aptana官网:http://www ...

  4. ASP.NET MVC 实现AJAX跨域请求方法《1》

    ASP.NET MVC 实现AJAX跨域请求的两种方法 通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据 ...

  5. Ninject之旅之一:理解DI

    摘要: DI(IoC)是当前软件架构设计中比较时髦的技术.DI(IoC)可以使代码耦合性更低,更容易维护,更容易测试.现在有很多开源的依赖反转的框架,Ninject是其中一个轻量级开源的.net DI ...

  6. Android IOS WebRTC 音视频开发总结(八十一)-- WebRTC靠谱吗?有没有适合的SDK推荐?

    作者:blaker,最早发表在我们的微信公众和[编风网],详见[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn) ...

  7. ArcGIS api fo silverlight学习二(silverlight加载GraphicsLayer)

    上一节学习了silverlight加载GeoServer发布的WMS地图,这一节学习一下加载GraphicsLayer 一.加载.png或jpg文件图标 1.在MainPage.xaml中添加资源配置 ...

  8. visual studio code(vscode) 调试php(转)

    原文链接:http://www.cnblogs.com/CLR010/p/5276077.html visual studio code(vscode) 调试php   1.下载vscode (vis ...

  9. ConCurrent in Practice小记 (1)

    ConCurrent in Practice小记 (1) 杂记,随书自己写的笔记: 综述问题 1.线程允许在同一个进程中的资源,包括共享内存,内存句柄,文件句柄.但是每个进程有自己的程序计数器,栈和局 ...

  10. 在线api地址

    J2SE1.7英文api地址: http://download.oracle.com/javase/7/docs/api/J2SE1.6英文api地址:  http://download.oracle ...