zoukankan      html  css  js  c++  java
  • Redis简单使用方法说明

    安装 www.redis.io
    下载安装包
    tar zxvf redis.tar.gz
    cd redis
    make
    cd src && make install
    移动文件,便于管理:
    mkdir -p /usr/local/redis/bin
    mkdir -p /usr/local/redis/etc
    mv /redis/redis.conf /usr/local/redis/etc
    mv /redis/src下面命令到 /usr/local/redis/bin


    一.数据类型 [终端命令行下操作]
    1.String类型
    1).介绍:包含任何的数据,比如图片或序列化的对象.
    2).set 设置key对应的值为string类型的value
    例:
    set name value
    3).get 获取设置的值
    get name

    4).setnx key存在,返回0,则设置不成功
    setnx name value

    5).setex 指定key的有效期 单位为秒
    setex name 10 red

    6).setrange 设置指定key的value值的子字符串
    get name 得到 aaa@126.com
    从第4个字符串开始替换,替换的字符串没有原的长,将会保留原有大于长于的字符串
    setrange name 4 gmail.com
    get name 得到 aaa@gmail.com

    7).mset 一次设置多个key的值
    mset k1 v1 k2 v2 k3 v3

    8).msetnx 一次设置多个key的值,一个key没有设置成功,将全部设置不成功,存在将不会设置即为0[false]
    msetnx k1 v1 k2 v2 k3 v3

    9).getset 设置key的值,并返回key的旧值
    getset key 30 得到 20就是原来的值,并设置了现在key为30

    10).getrange 获取key的值子字符串
    从第0个字符到第5个字符返回
    getrange key 0 5

    11).mget 批量获取
    mget k1 k2 k3 k4 k5

    12).incr 递增 对key的值做加加操作,并返回新的值
    incr key

    13).incrby 同incr类似,加指定的值,key不存在的时候会设置key,并认为原来的值为0
    incrby key 2 让key自增2
    incrby key -3 也可以设置为负数,就是自减 些例为自减3

    14).decr 自减
    decr key

    15).decrby 自减指定的值
    decrby key 2 自减2
    decrby key -2 自增2

    16).append 给指定key的字符串追加value,返回新字符串的值的长度
    append key @126.com

    17).strlen 取得值的长度
    strlen key


    2.hashes类型
    1).介绍
    hash是一个string类型的field和value的映射表.特别适用于存储对象.

    2).hset 设置hash field为指定的值,如key不存在则先创建
    hset user:001 name zhangsan 可以将user:001看成一个表 name为一个表的一个字段
    hget user:001 name 得到 zhangsan

    3).hsetnx 存在返回0
    hsetnx user:001 name zhangsan 返回 1
    再设置user:001 name设置就会返回 0

    4).hmset 同时设置hash的多个field
    hmset user:001 name zhangsan age 20 sex 1

    5).hget 获取
    hget user:001 name

    6).hmget 批量返回
    hmget user:001 name age sex

    7).hincrby 对某个key自增指定的数
    hincrby user:001 age 5 自增为5

    8).hexists 检查是否存在,存在为1 否则为0
    hexists user:001 name

    9).hlen 指定hash的field的数量
    hlen user:001

    10).hdel 删除指定hash的field的字段
    hdel user:001 age 删除age字段

    11).hkeys 返回hash中所有的字段
    hkeys user:001 返回user:001表中的所有字段

    12).hvals 返回hash所有的value
    hvals user:001 返回表中所有对应键的对应值

    13).hgetall 获取某个hash中全部的field及value
    hgetall user:001


    3.lists类型
    1).介绍
    List是一个链表结构,主要功能是push,pop获取一个范围的所有值.操作中key理解为链表的名字. list既可以作为栈,也可以作为队列. 类似于PHP的数组
    栈:类似于试管,后进先出,先进后出
    队列:类心于管道,先进先出

    2).lpush 从头部添加字符串元素
    lpush mylist world
    lpush mylist hello
    lrange mylist 0 -1 得 hello world 先后后出

    3).rpush 从尾部添加字符串元素
    rpush mylist world
    rpush mylist hello
    lrange mylist 0 -1 得 world hello 先进先出

    4).linsert 在key对应list的特定的位置前或后添加字符串
    lpush li1 "one"
    lpush li1 "two"
    lrange li1 0 -1
    linsert li1 before one three
    lrange li1 0 -1 得 two three one

    5).lset 指定下标的元素替换掉
    lset li1 1 four 把li1中下标为1的更改为four

    6).lrem 从key对应的list中删除n个和value相同的元素(n<0从尾删除,n=0全部删除)
    lrem li1 3 "one" 删除3个和one相关的元素

    7).ltrim 保留指定key的值范围内的数据
    lpush li1 "one"
    lpush li1 "two"
    lpush li1 "three"
    lpush li1 "four"
    ltrim li1 1 2 two three
    ltrim li1 1 -1 two three four

    8).lpop 从头部删除元素
    lpop li1

    9).rpop 从尾部删除元素

    10).rpoplpush 从第一个list的尾部移除元素,并添加到第二个list的头部
    rpoplpush mylist1 mylist2

    11)lindex 返回名称为key的list中index位置的元素
    lindex li1 0 得到 three 0代表元素的索引

    12).llen 返回list的多个元素 相当于PHP中的count()
    llen list1 返回个数


    4.sets类型
    1).介绍
    set是集合,它是string类型的无序集合. set是通过hash table实现的增删改查.对集合我们可以了并集,交集,差集.通过这些操作,我们可以实现sns中的好友推荐和blog的tag功能

    2).sadd 向名称为key的set中添加元素
    sadd myset one 返回1
    sadd myset two 返回1
    sadd myset one 返回0
    smembers myset 查看元素

    3).srem 删除key中set中的元素
    sadd myset one
    sadd myset two
    srem myset one 删除成功返回1
    smembers myset

    4).spop 随机返回并删除名称为key的set中一个元素
    sadd myset one
    sadd myset two
    spop myset

    5).sdiff 返回所有给定key与第一个key的差集
    sadd myset1 one
    sadd myset1 two

    sadd myset2 three
    sadd myset2 two

    sdiff myset1 myset2 返回 one
    sdiff myset2 myset1 返回 three 注:set谁在前返回前面不同的值

    6).sdiffstore 返回所有给定key与第一个key的差集,并将结果存为另一个set中
    sadd myset1 one
    sadd myset1 two

    sadd myset2 three
    sadd myset2 two

    sdiff myset3 myset1 myset2 将差集存储到myset3中

    7).sinter 返回所用给定的key的交集
    sadd myset1 one
    sadd myset1 two

    sadd myset2 three
    sadd myset2 two

    sinter myset1 myset2 得 two

    8).sinterstore 返回所用给定的key的交集并存储到另一个集合中
    sadd myset1 one
    sadd myset1 two

    sadd myset2 three
    sadd myset2 two

    sinterstore myset3 myset1 myset2 存到myset3集合中 two

    9).sunion 并集
    sadd myset1 one
    sadd myset1 two

    sadd myset2 three
    sadd myset2 two

    sunion myset1 myset2 得 one two three

    10).sunionstore 并集并存储
    sadd myset1 one
    sadd myset1 two

    sadd myset2 three
    sadd myset2 two

    sunion myset3 myset1 myset2 存myset3集合中 得 one two three

    11).smove 从第一个key对应的set中移除并添加到第二个对应的set中
    sadd myset1 one
    sadd myset1 two

    sadd myset2 three
    sadd myset2 two

    smove myset1 myset3 one 将myset1中的one移到myset8中

    12).scard 返回名称为key的set的元素个数
    scard myset1

    13).sismember 测试某个元素是否是名称为key的集合的元素 类似php中的in_array()
    sadd myset1 one
    sadd myset1 two

    sismember myset1 one 有返回1 无为0

    14).srandmemeber 随机返回名称为key的集合的一个元素,但不删除元素
    sadd myset1 one
    sadd myset1 two

    srandmemeber myset1


    5.sorted sets类型
    1).介绍
    是set一个升级版本,有序集合,有顺序

    2).zadd 添加
    zadd zset1 1 one 数定为索引
    zadd zset1 2 two
    zadd zset1 3 one
    zrange zset1 0 -1 withscores 后面数字索引

    3).zrem 删除名为key的zset中的元素
    zrem zset1 two

    4).zincrby 对顺序号进行增大和减小
    zincrby zset1 2 one
    zrange zset1 0 -1 withscores

    zincrby zset1 -2 one
    zrange zset1 0 -1 withscores

    5).zrank 返回名称为key的zset中元素的排名,下标从小到大排序
    zrank zset1 two

    6).zrevrank 降序排 在找索引 和zrank倒个
    zrevrank zset1 two

    7).zrangebyscore 返回集合中下标在给定区间的元素 按顺序删除
    zrangebyscore myset1 2 3 withscores 2和3是下标

    8).zcount 返回集合中下标在给定区间的数量
    zcount zset1 2 4

    9).zcard 返回集合中元素个数
    zcard zset1

    10).zremrangebyrank 删除集合中排名在给定区间的元素
    zremrangebyrank zset 1 1 只删除索引1


    二.Redis常用命令
    1).keys 返回满足给定pattern的所有key
    keys *

    2).exists 确认一个key是否存在
    exists name 存在返回1,否则0

    3).del 删除一个key
    del age 删除age键

    3).expire 设置一个key的过期时间 单位 秒
    expire age 10 给age键设置10秒过期
    ttl age 来获取这个key的有效时长

    4).select 选择数据库
    select 0 进行0数据库
    set age 30
    get age
    move age 1 从0数据库中把age移到1数据库中
    select 1
    get age

    5).persist 移除给定key的过期时间
    expire age 100
    ttl age
    persist age 取消age的过期时间

    6).randomkey 随机返回key空间的一个key
    randomkey

    7).rename 重命名key
    rename age age2 把age重命名为age2

    8).type 返回值的类型
    type age

    ---------------- 服务器相关命令

    9).ping 测试连接是否存活
    ping 通了就返回PONG

    10).echo 在命令行打印一此内容
    echo aaa

    11).quit 退出连接

    12).dbsize 返回当前数据库中key的数目
    dbsize

    13).info 获取服务器的相关信息
    info

    14).config get 实时传储收到的请求
    config get
    config get timeout

    15).flushdb 删除当前选择数据库中的所有key
    flushdb
    dbsize

    16).flushall 删除所有数据库中的所有key
    flushall
    dbsize


    三.Redis高级应用
    1).安全性
    在配置文件中修改
    requirepass 密码
    vi /etc/redis/etc/redis.conf
    requirepass test 这个test就是密码
    pkill redis-server 关闭
    /bin/redis-server /etc/redis/etc/redis.conf 启动
    这样就生效了

    在进入后授权
    auth test 就可以

    在登陆的时候就指定密码
    redis-cli -a test

    2.主从复制
    配置主从服务器:
    只需要在slave的配置文件中加入以下配置
    slaveof 192.168.1.100 6379 #指定master的ip和端口
    masterauth test #test主机的密码


    四.事务处理
    get age
    multi
    set age 10
    set age 20
    exec
    get age

    取消一个事务
    get age
    multi
    set age 10
    set age 20
    discard #取消一个事务

    乐观锁

    watch age 监听age键

    五.持久化机制
    1.snapshotting(快照)也是默认方式,默认文件名为dump.rdb
    2.Append-only file(缩写aof)的方式.

    snapshotting方式
    配置redis在n秒内如果超过m个key修改就自动做快照
    save 900 1 # 900秒内如果超过1个key被修改,则发起快照保存
    save 300 10 #300秒内如果超过10个key被修改,则发起快照保存
    save 6000 100

    aof方式
    redis会将每一个收到的定命令都通过write函数追加到文件中,当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容.当然由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上.可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机
    appendonly yes #启用aof持久化方式
    #appendfsync always # 收到写命令就立即写入磁盘,最慢,但是保证安全的持久化
    appendfsync everysec # 第秒钟写入磁盘一次.在性能和持久化方面做了很好的折中
    #appendfsync no # 完全依赖os,性能最好,持久化没保证


    六.发布及订阅消息
    发布:publish
    订阅:subscribe和psubscribe

    subscribe tv1 监听了tv1就这个频道 可以同事订阅多个频道 subscribe tv1 tv2

    发布
    publish tv1 nihao


    七.虚拟内存的使用
    把不经常访问的数据交换到磁盘上
    配置文件中的相关配置
    要加上这句: really-use-vm yes
    vm-enabled yes # 开启vm功能
    vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径
    vm-max-memory 1000000 # redis使用的最大内存上限
    vm-page-size 32 # 每个页面的大小32字节
    vm-pages 1123343334 # 最多使用多少页面
    vm-max-threads 4 # 用于执行value对象换入的工作线程数量


    八.和PHP结合
    1.打模块 打官网中下载 https://github.com/nicolasff/phpredis/archive/master.zip
    tar zxvf phpredis.tar.gz
    cd phpredis
    /usr/lcoal/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    修改PHP配置文件加上以模块
    extension=redis.so

  • 相关阅读:
    c语言函数定义、函数声明、函数调用以及extern跨文件的变量引用
    c语言局部变量 静态局部变量 全局变量与静态全局变量
    Source Insight建工程之Kernel
    day49
    管道实例取出最常用的10个指令
    day52
    Linux中vi的使用
    vi高级技巧
    vim配置
    typedef
  • 原文地址:https://www.cnblogs.com/ahwu/p/3619787.html
Copyright © 2011-2022 走看看