美文网首页
Java学习笔记--Redis的初尝试

Java学习笔记--Redis的初尝试

作者: Allens_Lee | 来源:发表于2020-02-21 17:17 被阅读0次

    一、Redis安装与配置

    1.安装

    1. 安装包解压缩
    tar -xvf redis-5.0.7.tar
    
    1. 打开redis文件夹
    cd redis-5.0.7
    
    1. 安装gcc-c++依赖
    yum install gcc-c++
    
    1. 编译
    make
    
    1. 安装
    make install
    

    2.配置

    1. 进入redis-5.0.7的utils包
    cd utils
    
    1. 拷贝redis_init_script到/etc/init.d/
      redis_init_script:redis的启动文件
    cp redis_init_script /etc/init.d/
    

    3、返回redis-5.0.7文件

    cd root/user/home/software/redis-5.0.7
    
    1. 在/usr/local/在创建redis文件夹
      redis.conf:redis的核心配置文件
    mkdir /usr/local/redis -p
    
    1. 把redis.conf文件拷贝到/usr/local/redis文件夹下
    cp redis.conf /usr/local/redis
    
    1. 进入/usr/local/redis文件夹下
    cd /usr/local/redis
    
    1. 编辑redis.conf文件
    vim redis.conf
    
    1. 修改daemonize的值为:yes。表示设置redis后台运行。
    2. 修改dir的值为:/usr/local/redis/working。表示设置一个redis的工作空间。
    3. 修改bind的值为:0.0.0.0。表示设置外部的应用可以远程访问。
    4. 设置requirepass的值为:allens。表示设置一个访问redis的密码,一定要进行设置,否则会给redis留下安全隐患。
    1. 回到/etc/init.d/文件夹下
    cd /etc/init.d/
    
    1. 编辑redis_init_script文件
    vim redis_init_script
    
    1. 修改CONF的值为/usr/local/redis/redis.conf。表示设置redis启动的核心配置文件的路径。
    1. 给redis_init_script脚本设置权限
    chmod 777 redis_init_script
    
    1. 启动redis
    ./redis_init_script start
    
    1. 查看redis的进程
    ps -ef | grep redis
    
    1. 设置redis的开机自启动
    1. 编辑redis_init_script文件,添加以下两句话
    #chkconfig: 22345 10 90
    #description: Start and Stop redis
    
    1. 将redis_init_script文件注入到开机自启动服务中
    chkconfig redis_init_script on
    

    3. redis-cli的使用

    1. 在终端输入redis-cli进入
    redis-cli
    
    1. 输入redis的密码。
      注意:如果不输入密码就进行操作会报“NOAUTH Authentication required.”
    auth password
    
    1. 使用crtl+c退出redis-cli。

    另外还可以使用redis-cli ping验证redis服务是否还存活:

    redis-cli -a password ping
    

    如果返回了一个PONG,表示服务存活。

    4. redis的关闭

    1. 进入到/etc/init.d/文件夹下
    cd /etc/init.d/
    
    1. 执行redis_init_script脚本中的stop指令
    ./redis_init_script stop
    

    注意:如果此时报错:NOAUTH Authentication required.。说明redis_init_script脚本中的stop指令下没有设置redis的密码,设置方式如下:

    <!-- 在redis_init_script的以下这行代码中加入:-a password。(password为:redis的密码) -->
    $CLIEXEC -a password -p $REDISPORT shutdown
    

    二、Redis使用

    键相关操作

    1. 查询指定键是否存在
    <!-- 输出1代表存在,0代表不存在 -->
    <!-- 格式:exists key -->
    exists server:name      =>    1
    exists server:blabla      =>    1
    
    1. 删除一个存在的健值对
    <!-- 格式:del key -->
    del server:name
    
    1. expire:给指定的键设置一个过期时间(以秒为单位)。在过期时间内给该键重新设置一个值,则该键值对的过期时间会被重置为-1(-1表示永不过期)。
    set resource:lock "Redis Demo"
    <!-- 设置键:resource:lock在120秒后过期 -->
    <!-- 格式:expire key seconds -->
    expire resource:lock 120
    

    直接给一个键设置一个过期时间

    <!-- 格式:set key value ex seconds -->
    set resource:lock "Redis Demo" ex 120
    
    1. ttl:查询过期时间(以秒为单位),查询结果为-2表示该键值对已经过期。-1表示该键值对永远不会过期。
    <!-- 格式:ttl key -->
    ttl resource:lock  =>   -2
    
    1. persist:取消过期时间
    <!-- 格式:persist key -->
    persist resource:lock => 1
    
    1. rename:修改key的名字
    <!-- 格式:rename key newkey -->
    rename key newkey
    
    1. renamex:仅当newkey不存在时,将key改名为newkey
    <!-- 格式:renamex key newkey -->
    renamex key newkey
    
    1. type:返回可以存储的数据的类型
    <!-- 格式:type key -->
    type key
    

    1.字符串操作

    1. 存储字符串
    <!-- 格式:set key value -->
    <!-- 键以“:”分割时候,会在redis服务器中进行分组 -->
    set server:name "fido"
    
    1. 查询某个键的值
    <!-- 格式:get key -->
    <!-- "=>"  后面表示预计输出的值 -->
    get server:name    =>   "fido"
    
    1. incr:原子性地增加存储在给定键上的数值(加1),如果指定键上的数据不是integer型的或者数据超出取值范围,则会报错。如果指定的键不存在,则会自动创建一个,并赋值为1.
    set connections 10
    <!-- 格式:incr key -->
    incr connections   =>   11
    
    1. incrby:将键中包含的数字增加指定数值
    <!-- 格式:incrby key increment -->
    incrby connections 100 => 111
    
    1. decr:原子性的减少指定键上的数值(减1)。如果指定的键不存在,则会自动创建一个,并赋值为-1.
    <!-- 格式:decr key -->
    decr connections => 110
    
    1. decrby:将键中包含的数字减少指定数值.
    <!-- 格式:decrby key decrement -->
    decrby connections 10 => 100
    

    2.List列表操作

    使用rpushlpush将新元素添加到列表中时,如果数据库中不存在指定的键,则会自动创建一个键。

    1. rpush:将新元素放在列表的末尾。
      rpushlpush可以一次性向一个列表中添加多个值
    <!-- 格式:rpush key value1 [value2] -->
    <!-- 返回的结果为列表的总长度 -->
    rpush friends "Alice" => 1
    rpush friends "Bob" => 2
    
    1. lpush:将新元素放在列表的开头。
    <!-- 格式:lpush key value1 [value2] -->
    lpush friends "Sam" => 3
    
    1. lrange:查看列表的子集。(第一个参数表示要查看的第一个元素的索引,第二个参数表示要检索的最后一个元素的索引,设置为-1时表示检索元素直到列表的末尾,-2表示检索到倒数第二个,依此类推。
    <!-- 格式:lrange key start end -->
    lrange friends 0 0  => "Sam"
    
    1. llen:查看列表的长度
    <!-- 格式:llen key -->
    llen friends => 3
    
    1. lpop:从列表中删除第一个元素并返回它。
    <!-- 格式:lpop key -->
    lpop friends => "Sam"
    
    1. rpop:从列表中删除最后一个元素并返回它。
    <!-- 格式:rpop key -->
    rpop friends => "Bob"
    

    3.SET集合操作

    1. sadd:将给定成员添加到集合中,该命令也是可变参数。
    <!-- 格式:sadd key member1 [member2] -->
    <!-- 返回成功添加进集合的个数,如果集合中已经存在该元素,则不会再次添加,所以不会进行对该元素的计数 -->
    sadd superpowers "flight" => 1
    sadd superpowers "x-ray vision" "reflexes" => 2
    
    1. scard:获取集合的成员数。
    <!-- 格式:scard key -->
    scard superpowers => 3
    
    1. srem:移除集合中一个或多个成员
    <!-- srem key member1 [member2] -->
    <!-- 返回成功删除的个数 -->
    srem superpowers "reflexes" => 1
    
    1. sismember:测试给定值是否在集合中。如果该值存在,则返回1,否则返回0。
    <!-- 格式:sismember key member -->
    sismember superpowers "flight" => 1
    
    1. smember:返回此集合中所有成员的列表
    <!-- 格式:smembers key -->
    smembers superpowers => "flight" "x-ray vision"
    
    1. sunion:组合两个或更多集合,并返回所有元素的列表。
    sadd birdpowers "pecking" "flight" => 2
    <!-- 格式:sunion key1 key2 -->
    sunion birdpowers superpowers => "x-ray vision" "flight" "pecking"
    
    1. spop:随机删除集合中的一个元素并返回
    sadd letters a b c d e f => 6
    <!-- 格式:spop key -->
    spop letters => a
    

    4.有序集合操作(zset)

    1. zadd:向有序集合添加一个或多个成员,或者更新已存在成员的分数
    <!-- 格式:zadd key score1 member1 [score2 member2] -->
    zadd hackers 1940 "Alan Kay" => 1
    
    1. zrange:通过索引区间返回有序集合指定区间内的成员
    <!-- 格式:zrange key start stop -->
    zrange hackers 0 -1 => "Alan Kay"
    
    1. zcard:获取有序集合的个数
    <!-- 格式:zcard key -->
    zcard hackers => 1
    
    1. zcount:计算在有序集合中指定区间分数的成员个数
    <!-- 格式:zcount key min max -->
    zcount hackers 1900 2000 => 1
    

    5.哈希操作(hash)

    1. hset:将哈希表 key 中的字段 field 的值设为 value 。
    <!-- 格式:hset key field1 value2 [field2 value2] -->
    hset user:1000 name "John"
    hset user:1000 email "john@example.com"
    hset user:1000 password "123456"
    
    1. hget:获取存储在哈希表中指定字段的值。
    <!-- 格式:hget key field1 -->
    hget user:1000 name => "John"
    
    1. hmget:获取所有给定字段的值
    <!-- 格式:hget key field1 [field2] -->
    hmget user:1000 name email => "John" "john@example.com"
    
    1. hgetall:获取在哈希表中指定 key 的所有字段和值
    <!-- 格式:hgetall key -->
    hgetall user:1000 => "name" "John" "email" "john@example.com" "password" "123456"
    
    1. hlen:获取哈希表中字段的数量
    <!-- 格式:hlen key -->
    hlen user:1000 => 3
    
    1. hkeys:获取哈希表中的所有字段
    <!-- 格式:hkeys key -->
    hkeys user:1000 => "name" "email" "password"
    
    1. hexists:查询哈希表中是否存在某个字段
    <!-- 格式:hexists key field -->
    hexists user:1000 name => 1
    
    1. hdel:删除一个或多个哈希表字段
    <!-- 格式:hdel key field1 [field2] -->
    hexists user:1000 name => 1
    
    1. hincrby:为哈希表 key 中的指定字段的整数值加上增量 increment (原子方式)。
    <!-- 格式:hincrby key field increment -->
    hincrby user:1000 visits 1 => 1
    
    1. hincrbyfloat:为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
    <!-- 格式:hincrbyfloat key field increment -->
    hincrbyfloat user:1000 score 80.5
    
    1. hmset:同时将多个 field-value (域-值)对设置到哈希表 key 中。
    <!-- 格式:hmset key field1 value1 [field2 value2] -->
    hmset user:1000 age 26 gender 2
    
    1. hsetnx:只有在字段 field 不存在时,设置哈希表字段的值。
    <!-- 格式:hsetnx key value -->
    hsetnx user:1000 name "Allen" => 1
    
    1. hvalues:获取哈希表中所有字段的值
    <!-- 格式:hvals key -->
    hvals user:1000 => "john@example.com" "123456" "1" "80.5" "26" "2" "Allen"
    

    相关文章

      网友评论

          本文标题:Java学习笔记--Redis的初尝试

          本文链接:https://www.haomeiwen.com/subject/eothqhtx.html