zoukankan      html  css  js  c++  java
  • 20150325--Redis-01

    image

    目录

    一、什么是nosql 1

    1NoSQL的基本说明: 1

    2)兴起的原因: 1

    3)特点: 1

    4)常见的nosql产品 1

    二、redis的基本介绍 2

    三、完成安装 2

    四、redis的数据类型 4

    1string类型, 4

    2、哈希(hash)类型 4

    3、链表(list) 4

    4、集合(set) 5

    5、有序集合 5

    五、redis的数据类型讲解相关命令 5

    1string类型 5

    2hashes类型 8

    3lists类型及操作 10

    4sets类型及操作 13

    5sorted sets类型及操作 17

    6redis常用命令 21

    六、安全性(设置密码) 25

    七、持久化的方式: 25

    1snapshotting(快照)默认方式 25

    2append-only file( 缩写aof)的方式 26

    八、php支持redis 27

    九、案例: 28

    一、什么是nosql

    (1)NoSQL的基本说明:

    NoSQL(NoSQL = Not Only SQL),意味反sql运动,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。它指的是非关系型的数据库。

    (2)兴起的原因:

    随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模高并发的sns类型的web2.o纯动态网站已经显得力不从心,暴露了很多难以克服的 问题,而非关系型的数据库则由于本身的特点得到了非常迅速的发展。

    (3)特点:

    优点:

    高并发读写的性能

    大数据量的扩展(分布式存储)

    配置简单

    灵活、高效的操作与数据模型

    低廉的成本

    不足之处:

    没有统一的标准

    没有正式的官方支持

    各种产品还不算成熟

    (4)常见的nosql产品

    新浪微博             Redis

    Google Bigtable

    Amazon SimpleDB

    淘宝数据平台 Tair

    优酷视频 MongoDB

    飞信空间 HandlerSocket

    视觉中国网站 MongoDB

    二、redis的基本介绍

    redis是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串哈希链表集合有序集合

    (1)redis也是一个c/s 架构,

    (2)memcache的数据是存储到内存中,redis数据也可以存储到内存里面,会同步到磁盘中,达到数据存储的持久化。

    (3)memcache的数据存储是键值对,同样的话redis也是键值对,只不过redis值的类型比较丰富,有string(字符串),hash(哈希),list(链表),set(集合)zset(有序集合)

    基本介绍:

    (1)Redis是一个Key-Value存储系统。

    (2)它支持存储的value类型很多,包括string(字符串)list(链表)set(集合)Zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集和并集及更丰富的操作、Redis支持各种不同方式的排序。

    (3)为了保证效率数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。

    (4)提供的API语言包括:C、C++、C#、Clojure     Common Lisp  Erlang  Haskell Java Javascript Lua Objective-C Perl PHP Python Ruby Scala Go Tcl

    三、完成安装

    (1)下载安装包:

    http://redis.googlecode.com/files/redis-2.4.17.tar.gz

    (2)编译程序:

    tar zxvf redis-2.4.17.tar.gz

    cd redis-2.4.17

    make

    #安装到指定的目录,比如 /usr/local/redis

    make  PREFIX=/usr/local/redis install

    wpsAC74.tmp

    注: PREFIX要大写

    安装后在/usr/local/redis/bin目录下面生成如下文件:

    redis-benchmark  性能测试工具

    redis-check-aof 日志文件检测工具(比如断电造成日志损坏,可以检测并修复)

    redis-check-dump 快照文件检测工具,效果类上

    redis-cli 客户端连接程序

    redis-server 服务端启动程序

    wpsAC84.tmp

    (3)从解压包里面复制配置文件到新建的redis目录

    cp    redis.conf      /usr/local/redis/redis.conf

    wpsAC95.tmp

    (4)修改该配置文件,让进程在后台运行

    编辑conf配置文件(vi redis.conf),修改如下内容;

    daemonize yes

    wpsAC96.tmp

    (5)启动与连接

    服务器端启动

    使用bin里面的redis-server命令,来完成启动,在启动时要指定配置文件。

    语法 redis-server  指定的配置文件

    进入到redis的bin目录执行redis-server  ../redis.conf

    wpsACA7.tmp

    查看是否正常启动:启动后,默认的端口是6379

    ps –ef |grep redis

    netstat –tunpl | grep 6379

    wpsACA8.tmp

    客户端连接

    使用bin目录里面的redis-cli命令来完成连接启动。

    进入到redis的bin目录执行redis-cli

    wpsACB8.tmp

    四、redis的数据类型

    1、string类型,

    字符串类型,键值对形式存储,值为字符串。

    name  xiaogang

    age     12

    email   nihao@sohu.com

    2、哈希(hash)类型

    哈希里面的值,又为键值对:

    wpsACB9.tmp

    3、链表(list):

    可以模拟队列和栈。

    值里面可以存储多个值,

    wpsACCA.tmp

    4、集合(set)

    集合的特点:集合里面的数据是唯一的,无序性。

    wpsACDB.tmp

    5、有序集合

    wpsACEB.tmp

    五、redis的数据类型讲解相关命令

    1、string类型

    String是最简单的类型,一个 key对应一个Value,String类型是二进制安全的。Redis的 string可以包含任何数据,比如jpg图片或者序列化的对象。

    (1)set

    设置键,值

    语法:set  键名称  值

    例如:我们添加一个name=“hanguo”的键值对。

    重新设置则直接覆盖。

    wpsACFC.tmp

    (2)get

    获取key对应的string值,如果key不存在返回 nil,

    语法:get 键值

    wpsACFD.tmp

    (3)Setnx

    设置键时,先判断一下该键是否存在,如果key已经存在,返回0,nx是not exist的意思。

    若键已经存在,则设置不成功,返回0

    wpsAD0D.tmp

    (4)setex

    设置key对应的值为string类型的value,并指定此键值对应的有效期。

    语法:setex 名称 有效期   值

    例如:我们添加一个color = red的键值对,并指定有效期为10秒。

    wpsAD0E.tmp

    (5)setrange

    替换字符串中某些字符

    语法:setrange    键名称    开始替换的序号   替换为的内容

    例如:我们希望将hanguo的sohu邮箱替换为qq.com邮箱

    wpsAD1F.tmp

    (6)mset

    一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。

    语法:

    mset 名称1   值1   名称2    值2      

    wpsAD20.tmp

    (7)msetnx

    一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key。

    wpsAD31.tmp

    (8)getset

    设置key的值,并返回key的旧值。(设置新值,获取旧值。)

    wpsAD32.tmp

    (9)getrange

    获取key的value值的范围内的子字符串

    getrange name 0 5

    (10)mget

    一次获取多个key的值,如果对应key不存在则对应返回nil。

    wpsAD42.tmp

    (11)incr

    对key的值做加加操作,并返回新的值。

    incrby

    同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0。

    wpsAD53.tmp

    (12)decr

    对key的值做减减操作。

    decrby

    同decr类似,减指定值

    wpsAD54.tmp

    (13)append

    给指定key的字符串追加value,返回新字符串值的长度。

    wpsAD74.tmp

    (14)strlen

    取指定key的value值的长度。

    wpsAD75.tmp

    2、hashes类型

    Redis hash是一个string类型的field和value的映射表。它的添加、删除操作都是0(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

    (1)hset

    设置hash field为指定值,如果 key不存在,则先创建。

    语法:

    hset  哈希名称  字段名称   值

    wpsAD86.tmp

    (2)hget

    取出hash field的值。语法:hget 哈希名称  字段名称

    wpsAD88.tmp

    (3)hsetnx

    设置hash field为指定值,如果key不存在,则先创建,如果存在则返回0。

    wpsAD97.tmp

    (4)hmset

    同时设置hash的多个field

    语法:hmset 哈希名称  field1  value1 field2 value2

    wpsADA9.tmp

    (5)hmget

    获取全部指定的hash field。

    语法:hmget 哈希名称 field1 field2

    wpsADB9.tmp

    (6)hincrby

    指定的 hash  field加上给定的值。

    wpsADC9.tmp

    (7)hexists

    测试指定的 field是否存在。

    wpsADCA.tmp

    (8)hlen

    返回指定hash的field数量。

    wpsADDB.tmp

    (9)hdel

    删除指定hash的field

    语法:hdel 哈希名 field

    wpsADDC.tmp

    (10)hkeys

    返回hash的所有field

    wpsADED.tmp

    (11)hvals

    返回hash的所有 value。

    wpsADEE.tmp

    (12)hgetall

    获取某个hash中全部的field及value

    wpsADFE.tmp

    3、lists类型及操作

    list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key 理解为链表的名字。redis的list类型其实就是一个每个子元素都是string 类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list即可以作为栈,又可以作为队列。

    (1)lpush

    在key对应list的头部添加字符串元素。

    语法:lpush 链表名称  值内容

    wpsADFF.tmp

    (2)lrange

    获取链表里面的值,语法:lrange 链表名称  0 -1

    注意0 和 -1 表示取值范围,从头部到尾部。

    (3)rpush

    在key对应list的尾部添加字符串元素。

    语法:rpush 链表名称  值内容

    wpsAE10.tmp

    (3)linsert

    在key对应list的特定位置前或后添加字符串。

    wpsAE11.tmp

    (4)lset

    设置list中指定下标的元素值。注:下标从0开始计算

    wpsAE21.tmp

    (5)lrem

    从key对应list中删除n个和value相同的元素。(n<0从尾删除,n=0全部删除)

    wpsAE32.tmp

    (6)ltrim

    保留指定key的值范围内的数据。

    wpsAE33.tmp

    (7)lpop

    list的头部删除元素,并返回删除元素。

    wpsAE44.tmp

    (8)rpop

    从 list的尾部删除元素,并返回删除元素。

    wpsAE45.tmp

    (9)rpoplpush

    从第一个list的尾部移除元素并添加到第二个list的头部。

    wpsAE55.tmp

    (10)lindex

    返回名称为key的list中 index位置的元素。

    wpsAE56.tmp

    (11)llen

    返回key对应list的长度。

    wpsAE67.tmp

  • 相关阅读:
    C++ 学习笔记
    面向对象
    多线程
    Spring-扫描注解原理,注解自动扫描原理分析
    Eclipse 中报错的阅读顺序
    Eclipse 常用技巧及常见问题解决
    JAVA高级复习-自定义泛型类、泛型接口的注意点
    JAVA高级复习-泛型的使用
    IntelliJ IDEA学习笔记连载一IntelliJ IDEA中创建Maven工程
    JAVA高级复习-多线程的创建方式二
  • 原文地址:https://www.cnblogs.com/lifushan/p/5471721.html
Copyright © 2011-2022 走看看