一.什么是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. qt 环境下mapx组件的鼠标跟踪

    经过两天的研究mapx组件人坐标转换还是没有转换成功,因为不管怎么变,定点转换的经纬度坐标始终与期望的值有较大的偏差.最后还是想老大请教了一下,划了半天功夫就研究出来了(不愧是老大,仰慕之情犹如滔滔江 ...

  2. The PHP Package 之 monolog[转]

    Monolog 发送你的日志到文件.到sockets.到邮箱.到数据库或(和)者其他网路存储服务(云).Monolog可以做到同时保存到一个或多个存储介质(后面的栈冒泡处理). 安装   $ comp ...

  3. [转载]Python & Selenium -- 页面加载时间过长&启动指定FF

    原文链接:https://my.oschina.net/u/2344787/blog/400507?p={{page}} 1. selenium webdriver在get方法会一直等待页面加载完毕才 ...

  4. Encrypting bootloader (程序BIN文件加密及在线升级)

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 在上一个博客随笔,我介 ...

  5. c++程序设计之编程思想

    代码块愈小,代码的功能就愈容易管理,代码的处理和移动就愈轻松. 任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员. 绝大多数情况下,函数应该放在它所使用的数据的所 ...

  6. MAXIMO-修改菜单

    MAXIMO菜单修改 模块: select * from MAXMODULES; -- 查询模块 一级菜单(应用程序):  select * from MAXMENU where MENUTYPE=' ...

  7. 笔试常考的Linux命令大全

    1. wc -l 统计一个文件的行数.l-line.-c是字节数,-m是字符数,mc不能同时使用.-L打印最长行的长度. 2. 查看系统进程的命令:ps,查看CPU占用命令:top.df:查看磁盘使用 ...

  8. php web 信息采集

    <?php /** * 可以灵活配置使用的采集器 * 作者:Rain * 创建时间:2015-02-03 15:17:30 * 版本信息:V1.0 */ //////////////////// ...

  9. Hive集成HBase;安装pig

    Hive集成HBase 配置 将hive的lib/中的HBase.jar包用实际安装的Hbase的jar包替换掉 cd /opt/hive/lib/ ls hbase-0.94.2*  rm -rf ...

  10. javascript知识点总结----Function定义

    ---恢复内容开始--- 函数Function: 函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法,函数名实际上是一个指向函数的指针,不会与某个函数绑定 ...