Java学习笔记--Redis的初尝试
2020-02-21 本文已影响0人
Allens_Lee
一、Redis安装与配置
1.安装
- 安装包解压缩
tar -xvf redis-5.0.7.tar
- 打开redis文件夹
cd redis-5.0.7
- 安装gcc-c++依赖
yum install gcc-c++
- 编译
make
- 安装
make install
2.配置
- 进入redis-5.0.7的utils包
cd utils
- 拷贝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
- 在/usr/local/在创建redis文件夹
redis.conf:redis的核心配置文件
mkdir /usr/local/redis -p
- 把redis.conf文件拷贝到/usr/local/redis文件夹下
cp redis.conf /usr/local/redis
- 进入/usr/local/redis文件夹下
cd /usr/local/redis
- 编辑redis.conf文件
vim redis.conf
- 修改daemonize的值为:yes。表示设置redis后台运行。
- 修改dir的值为:/usr/local/redis/working。表示设置一个redis的工作空间。
- 修改bind的值为:0.0.0.0。表示设置外部的应用可以远程访问。
- 设置requirepass的值为:allens。表示设置一个访问redis的密码,一定要进行设置,否则会给redis留下安全隐患。
- 回到/etc/init.d/文件夹下
cd /etc/init.d/
- 编辑redis_init_script文件
vim redis_init_script
- 修改CONF的值为/usr/local/redis/redis.conf。表示设置redis启动的核心配置文件的路径。
- 给redis_init_script脚本设置权限
chmod 777 redis_init_script
- 启动redis
./redis_init_script start
- 查看redis的进程
ps -ef | grep redis
- 设置redis的开机自启动
- 编辑redis_init_script文件,添加以下两句话
#chkconfig: 22345 10 90
#description: Start and Stop redis
- 将redis_init_script文件注入到开机自启动服务中
chkconfig redis_init_script on
3. redis-cli的使用
- 在终端输入redis-cli进入
redis-cli
- 输入redis的密码。
注意:如果不输入密码就进行操作会报“NOAUTH Authentication required.”
auth password
- 使用
crtl+c
退出redis-cli。
另外还可以使用redis-cli ping
验证redis服务是否还存活:
redis-cli -a password ping
如果返回了一个PONG
,表示服务存活。
4. redis的关闭
- 进入到/etc/init.d/文件夹下
cd /etc/init.d/
- 执行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代表存在,0代表不存在 -->
<!-- 格式:exists key -->
exists server:name => 1
exists server:blabla => 1
- 删除一个存在的健值对
<!-- 格式:del key -->
del server:name
- 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
- ttl:查询过期时间(以秒为单位),查询结果为-2表示该键值对已经过期。-1表示该键值对永远不会过期。
<!-- 格式:ttl key -->
ttl resource:lock => -2
- persist:取消过期时间
<!-- 格式:persist key -->
persist resource:lock => 1
- rename:修改key的名字
<!-- 格式:rename key newkey -->
rename key newkey
- renamex:仅当newkey不存在时,将key改名为newkey
<!-- 格式:renamex key newkey -->
renamex key newkey
- type:返回可以存储的数据的类型
<!-- 格式:type key -->
type key
1.字符串操作
- 存储字符串
<!-- 格式:set key value -->
<!-- 键以“:”分割时候,会在redis服务器中进行分组 -->
set server:name "fido"
- 查询某个键的值
<!-- 格式:get key -->
<!-- "=>" 后面表示预计输出的值 -->
get server:name => "fido"
- incr:原子性地增加存储在给定键上的数值(加1),如果指定键上的数据不是integer型的或者数据超出取值范围,则会报错。如果指定的键不存在,则会自动创建一个,并赋值为1.
set connections 10
<!-- 格式:incr key -->
incr connections => 11
- incrby:将键中包含的数字增加指定数值
<!-- 格式:incrby key increment -->
incrby connections 100 => 111
- decr:原子性的减少指定键上的数值(减1)。如果指定的键不存在,则会自动创建一个,并赋值为-1.
<!-- 格式:decr key -->
decr connections => 110
- decrby:将键中包含的数字减少指定数值.
<!-- 格式:decrby key decrement -->
decrby connections 10 => 100
2.List列表操作
使用rpush
或lpush
将新元素添加到列表中时,如果数据库中不存在指定的键,则会自动创建一个键。
-
rpush:将新元素放在列表的末尾。
rpush
和lpush
可以一次性向一个列表中添加多个值
<!-- 格式:rpush key value1 [value2] -->
<!-- 返回的结果为列表的总长度 -->
rpush friends "Alice" => 1
rpush friends "Bob" => 2
- lpush:将新元素放在列表的开头。
<!-- 格式:lpush key value1 [value2] -->
lpush friends "Sam" => 3
- lrange:查看列表的子集。(第一个参数表示要查看的第一个元素的索引,第二个参数表示要检索的最后一个元素的索引,设置为-1时表示检索元素直到列表的末尾,-2表示检索到倒数第二个,依此类推。)
<!-- 格式:lrange key start end -->
lrange friends 0 0 => "Sam"
- llen:查看列表的长度
<!-- 格式:llen key -->
llen friends => 3
- lpop:从列表中删除第一个元素并返回它。
<!-- 格式:lpop key -->
lpop friends => "Sam"
- rpop:从列表中删除最后一个元素并返回它。
<!-- 格式:rpop key -->
rpop friends => "Bob"
3.SET集合操作
- sadd:将给定成员添加到集合中,该命令也是可变参数。
<!-- 格式:sadd key member1 [member2] -->
<!-- 返回成功添加进集合的个数,如果集合中已经存在该元素,则不会再次添加,所以不会进行对该元素的计数 -->
sadd superpowers "flight" => 1
sadd superpowers "x-ray vision" "reflexes" => 2
- scard:获取集合的成员数。
<!-- 格式:scard key -->
scard superpowers => 3
- srem:移除集合中一个或多个成员
<!-- srem key member1 [member2] -->
<!-- 返回成功删除的个数 -->
srem superpowers "reflexes" => 1
- sismember:测试给定值是否在集合中。如果该值存在,则返回1,否则返回0。
<!-- 格式:sismember key member -->
sismember superpowers "flight" => 1
- smember:返回此集合中所有成员的列表
<!-- 格式:smembers key -->
smembers superpowers => "flight" "x-ray vision"
- sunion:组合两个或更多集合,并返回所有元素的列表。
sadd birdpowers "pecking" "flight" => 2
<!-- 格式:sunion key1 key2 -->
sunion birdpowers superpowers => "x-ray vision" "flight" "pecking"
- spop:随机删除集合中的一个元素并返回
sadd letters a b c d e f => 6
<!-- 格式:spop key -->
spop letters => a
4.有序集合操作(zset)
- zadd:向有序集合添加一个或多个成员,或者更新已存在成员的分数
<!-- 格式:zadd key score1 member1 [score2 member2] -->
zadd hackers 1940 "Alan Kay" => 1
- zrange:通过索引区间返回有序集合指定区间内的成员
<!-- 格式:zrange key start stop -->
zrange hackers 0 -1 => "Alan Kay"
- zcard:获取有序集合的个数
<!-- 格式:zcard key -->
zcard hackers => 1
- zcount:计算在有序集合中指定区间分数的成员个数
<!-- 格式:zcount key min max -->
zcount hackers 1900 2000 => 1
5.哈希操作(hash)
- 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"
- hget:获取存储在哈希表中指定字段的值。
<!-- 格式:hget key field1 -->
hget user:1000 name => "John"
- hmget:获取所有给定字段的值
<!-- 格式:hget key field1 [field2] -->
hmget user:1000 name email => "John" "john@example.com"
- hgetall:获取在哈希表中指定 key 的所有字段和值
<!-- 格式:hgetall key -->
hgetall user:1000 => "name" "John" "email" "john@example.com" "password" "123456"
- hlen:获取哈希表中字段的数量
<!-- 格式:hlen key -->
hlen user:1000 => 3
- hkeys:获取哈希表中的所有字段
<!-- 格式:hkeys key -->
hkeys user:1000 => "name" "email" "password"
- hexists:查询哈希表中是否存在某个字段
<!-- 格式:hexists key field -->
hexists user:1000 name => 1
- hdel:删除一个或多个哈希表字段
<!-- 格式:hdel key field1 [field2] -->
hexists user:1000 name => 1
- hincrby:为哈希表 key 中的指定字段的整数值加上增量 increment (原子方式)。
<!-- 格式:hincrby key field increment -->
hincrby user:1000 visits 1 => 1
- hincrbyfloat:为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
<!-- 格式:hincrbyfloat key field increment -->
hincrbyfloat user:1000 score 80.5
- hmset:同时将多个 field-value (域-值)对设置到哈希表 key 中。
<!-- 格式:hmset key field1 value1 [field2 value2] -->
hmset user:1000 age 26 gender 2
- hsetnx:只有在字段 field 不存在时,设置哈希表字段的值。
<!-- 格式:hsetnx key value -->
hsetnx user:1000 name "Allen" => 1
- hvalues:获取哈希表中所有字段的值
<!-- 格式:hvals key -->
hvals user:1000 => "john@example.com" "123456" "1" "80.5" "26" "2" "Allen"