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

2020-02-21  本文已影响0人  Allens_Lee

一、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"
上一篇下一篇

猜你喜欢

热点阅读