zoukankan      html  css  js  c++  java
  • redis 入门

    1、命令行工具

    在windows上巧命令行指令,实在是令人痛苦,本人实在是受不了windows下cmd的笨,powershell的蠢,只能换一个了。

    介绍一款cmd工具cmder(github上开源),地址:http://bliker.github.io/cmder/,如下图,若有更好的工具,请大家告诉一下我,在此,先谢谢。

    注:"λ"为cmder工具的标识,后边指令凡是遇到这个字符,都可以跳过

    2、官方下载redis

    地址:http://redis.io/download,

    官方提供linux版本,可以直接在此处下载

    若是需要windows版本,官方推荐https://github.com/MSOpenTech/redis/releases。我下载的是此版本后,解压下载包到本地目录,如D:Programs edis-2.8.19

    3、启动数据库服务。 

    命令:

    redis-server.exe redis.windows.conf
    

      

    4、测试数据库,

     下边我们分别创建string,list,hash,至于更高级的,大家自己再深入学习吧

    注意:

    redis指令以回车作为结束标识,所以后边不能加标点符号,否则会报错,或者执行错误的指令(即把分号当成指令的一部分)

    canssdra指令将分号作为指令结束标识,所以后边必须加分号“;”,否则认为该指令没有结束。

    λ redis-cli.exe -h 127.0.0.1 -p 6379
    127.0.0.1:6379> keys *;
    (empty list or set)
    127.0.0.1:6379> set name 'zxh';
    Invalid argument(s)
    127.0.0.1:6379> set name 'zxh'
    OK

    4.1 string

    C:Userszxh
    λ cd D:Programs
    edis-2.8.19
    
    C:Userszxh
    λ d:
    
    D:Programs
    edis-2.8.19
    λ redis-cli.exe -h 127.0.0.1 -p 6379
    127.0.0.1:6379> KEYS *o*
    (empty list or set)
    
    127.0.0.1:6379> set username 'zxh'
    
    OK
    127.0.0.1:6379> get username
    "zxh"
    127.0.0.1:6379>

    4.2 list 

    127.0.0.1:6379> rpush friends 'zhangsan'
    (integer) 1
    127.0.0.1:6379> rpush friends 'lisi'
    (integer) 2
    127.0.0.1:6379> rpush friends 'wangwu'
    (integer) 3
    127.0.0.1:6379> lrange friends 0 -1
    1) "zhangsan"
    2) "lisi"
    3) "wangwu"
    127.0.0.1:6379>

    4.3 hash

    127.0.0.1:6379> hset companyaddress province bj
    (integer) 1
    127.0.0.1:6379> hset companyaddress area haidianqu
    (integer) 1
    127.0.0.1:6379> hset companyaddress detail zhongguancun
    (integer) 1
    
    127.0.0.1:6379> hgetall companyaddress
    1) "province"
    2) "bj"
    3) "area"
    4) "haidianqu"
    5) "detail"
    6) "zhongguancun" 

    5、下载Client jar

    注意,这里和cassandra不同,没有使用jdbc驱动,原因,官方不建议使用,而且,jdbc驱动有一些问题,如,新版redis使用jdbc驱动存数据,写入数据库的是数据的长度 ,而非数据真实值。

    cliendt jar包,我们选择jedis,位置 branchesmvn-repo edisclientsjedis2.2.0jedis-2.2.0.jar

    或者直接从这里下载 http://files.cnblogs.com/piaolingzxh/jedis-2.2.0.jar.zip(下载后直接去掉后缀名.zip就可以了)

    6、使用java连接redis

    记得引用上边的jar包,以下是主要java代码片段

    //redis -> jedis
    //驱动地址:https://raw.githubusercontent.com/xetorthio/jedis/mvn-repo/redis/clients/jedis/2.2.0/jedis-2.2.0.jar
    //或者http://files.cnblogs.com/piaolingzxh/jedis-2.2.0.jar.zip
    import java.util.List;
    
    import redis.clients.jedis.*;
    
    public class redis_jedis {
    
    	public static void main(String[] args) {
    		Jedis redis = new Jedis("localhost", 6379);// 连接redis
    		// String
    		redis.del("user");
    		redis.set("user", "piaolingzxh");
    		System.out.println(redis.get("user"));
    		// List
    		redis.del("edu");
    		redis.lpush("edu", "xiaoxue", "chuzhong", "gaozhong");
    		List<String> eduList = redis.lrange("edu", 0, -1);
    		for (int i = 0; i < eduList.size(); i++) {
    			System.out.print(eduList.get(i) + "	");
    		}
    		System.out.println();
    
    		// hash key field value
    		redis.del("home_address");
    		redis.hset("home_address", "province", "henan");
    		redis.hset("home_address", "city", "sanmenxia");
    		redis.hset("home_address", "detail", "what a u doing?");
    
    		List list = redis.hmget("home_address", "province", "city", "detail");
    		for (int i = 0; i < list.size(); i++) {
    			System.out.print(list.get(i) + "	");
    		}	 
    	}
    }
    

      

     到数据库中查看结果

    C:Userszxh
    λ cd D:Programs
    edis-2.8.19
    
    C:Userszxh
    λ d:
    
    D:Programs
    edis-2.8.19
    λ redis-cli.exe -h 127.0.0.1 -p 6379
    127.0.0.1:6379> KEYS *o*
    (empty list or set)
    
    
    127.0.0.1:6379> keys *
    1) "home_address"
    2) "edu"
    3) "user"
    127.0.0.1:6379> get user
    "piaolingzxh"
    
    127.0.0.1:6379> lrange edu 0 -1
    1) "gaozhong"
    2) "chuzhong"
    3) "xiaoxue"
    
    127.0.0.1:6379> hgetall home_address 
    1) "province" 
    2) "henan" 
    3) "city" 
    4) "sanmenxia" 
    5) "detail" 
    6) "what a u doing?"
    

    7:Scala 连接 redis

    //redis -> jedis
    //驱动地址:https://raw.githubusercontent.com/xetorthio/jedis/mvn-repo/redis/clients/jedis/2.2.0/jedis-2.2.0.jar
    //或者http://files.cnblogs.com/piaolingzxh/jedis-2.2.0.jar.zip
    import redis.clients.jedis.Jedis;
    
    object redis_jedis {
      def main(args: Array[String]): Unit = {
        var redis = new Jedis("localhost", 6379);
        // String
        redis.del("user");
        redis.set("user", "piaolingzxh");
        System.out.println(redis.get("user"));
    
        // List
        redis.del("edu");
        redis.lpush("edu", "xiaoxue", "chuzhong", "gaozhong");
        redis.lrange("edu", 0, -1).toArray().foreach((str) => System.out.print(str + "	"));
        System.out.println();
    
        // hash key field value
         redis.del("home_address");
        redis.hset("home_address", "province", "henan");
        redis.hset("home_address", "city", "sanmenxia");
        redis.hset("home_address", "detail", "what a u doing?");
    
        redis.hmget("home_address", "province", "city", "detail").toArray().foreach((str) => System.out.print(str + "	"));
        System.out.println();
    
      }
    } 

    8:附redis指令集

    连接操作相关的命令
    
    quit:关闭连接(connection)
    auth:简单密码认证
    
    持久化
    
    save:将数据同步保存到磁盘
    bgsave:将数据异步保存到磁盘
    lastsave:返回上次成功将数据保存到磁盘的Unix时戳
    shundown:将数据同步保存到磁盘,然后关闭服务
    
    远程服务控制
    
    info:提供服务器的信息和统计
    monitor:实时转储收到的请求
    slaveof:改变复制策略设置
    config:在运行时配置Redis服务器
    
    对value操作的命令
    
    exists(key):确认一个key是否存在
    del(key):删除一个key
    type(key):返回值的类型
    keys(pattern):返回满足给定pattern的所有key
    randomkey:随机返回key空间的一个
    keyrename(oldname, newname):重命名key
    dbsize:返回当前数据库中key的数目
    expire:设定一个key的活动时间(s)
    ttl:获得一个key的活动时间
    select(index):按索引查询
    move(key, dbindex):移动当前数据库中的key到dbindex数据库
    flushdb:删除当前选择数据库中的所有key
    flushall:删除所有数据库中的所有key
    
    对String操作的命令
    
    set(key, value):给数据库中名称为key的string赋予值value
    get(key):返回数据库中名称为key的string的value
    getset(key, value):给名称为key的string赋予上一次的value
    mget(key1, key2,…, key N):返回库中多个string的value
    setnx(key, value):添加string,名称为key,值为value
    setex(key, time, value):向库中添加string,设定过期时间time
    mset(key N, value N):批量设置多个string的值
    msetnx(key N, value N):如果所有名称为key i的string都不存在
    incr(key):名称为key的string增1操作
    incrby(key, integer):名称为key的string增加integer
    decr(key):名称为key的string减1操作
    decrby(key, integer):名称为key的string减少integer
    append(key, value):名称为key的string的值附加value
    substr(key, start, end):返回名称为key的string的value的子串
    
    对List操作的命令
    
    rpush(key, value):在名称为key的list尾添加一个值为value的元素
    lpush(key, value):在名称为key的list头添加一个值为value的 元素
    llen(key):返回名称为key的list的长度
    lrange(key, start, end):返回名称为key的list中start至end之间的元素
    ltrim(key, start, end):截取名称为key的list
    lindex(key, index):返回名称为key的list中index位置的元素
    lset(key, index, value):给名称为key的list中index位置的元素赋值
    lrem(key, count, value):删除count个key的list中值为value的元素
    lpop(key):返回并删除名称为key的list中的首元素
    rpop(key):返回并删除名称为key的list中的尾元素
    blpop(key1, key2,… key N, timeout):lpop命令的block版本。
    brpop(key1, key2,… key N, timeout):rpop的block版本。
    rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    
    对Set操作的命令
    
    sadd(key, member):向名称为key的set中添加元素member
    srem(key, member) :删除名称为key的set中的元素member
    spop(key) :随机返回并删除名称为key的set中一个元素
    smove(srckey, dstkey, member) :移到集合元素
    scard(key) :返回名称为key的set的基数
    sismember(key, member) :member是否是名称为key的set的元素
    sinter(key1, key2,…key N) :求交集
    sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
    sunion(key1, (keys)) :求并集
    sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
    sdiff(key1, (keys)) :求差集
    sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
    smembers(key) :返回名称为key的set的所有元素
    srandmember(key) :随机返回名称为key的set的一个元素
    
    对Hash操作的命令
    
    hset(key, field, value):向名称为key的hash中添加元素field
    hget(key, field):返回名称为key的hash中field对应的value
    hmget(key, (fields)):返回名称为key的hash中field i对应的value
    hmset(key, (fields)):向名称为key的hash中添加元素field 
    hincrby(key, field, integer):将名称为key的hash中field的value增加integer
    hexists(key, field):名称为key的hash中是否存在键为field的域
    hdel(key, field):删除名称为key的hash中键为field的域
    hlen(key):返回名称为key的hash中元素个数
    hkeys(key):返回名称为key的hash中所有键
    hvals(key):返回名称为key的hash中所有键对应的value
    hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
     
    

      参考:http://www.cnblogs.com/oubo/archive/2011/09/07/2394568.html

  • 相关阅读:
    框架_爬虫如何应用(爬虫架构设计与实现)
    架构师_设计模式_结构型_代理模式
    7语法基础_CLR核心解析
    架构师_设计模式_结构型_享元模式
    架构师_设计模式_结构型_组合模式
    同源策略、跨域、Same-origin、Cross-origin
    ES(elasticsearch) query DSL 查询语法
    日志框架
    powerdesigner 名称、注释互转
    maven 可运行 jar 包的打包,包含依赖 jar 包
  • 原文地址:https://www.cnblogs.com/piaolingzxh/p/4199999.html
Copyright © 2011-2022 走看看