Redis

Posted Sun_先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis相关的知识,希望对你有一定的参考价值。

介绍

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

安装

window版本地址:https://github.com/tporadowski/redis/releases

如果是Linux,请参照:https://www.runoob.com/redis/redis-install.html

下载完成后,cd到该路径执行下面命令,你也可配置环境直接运行。

redis-server.exe redis.windows.conf

查看是否安装成功

执行:redis-server

如果出现下图页面,即安装成功。注意:在运行过程中不关闭服务端。

 

安装服务

redis-server --service-install redis.windows-service.conf --loglevel verbose

安装服务的时候一定要在redis路径下执行该命令。

卸载服务

redis-server --service-uninstall

开启服务

redis-server --service-start

停止服务

redis-server --service-stop

 

基础设置

连接

如果不指定默认是本机。

$ redis-cli -h host -p port -a password

-h 服务器地址 -p 端口号 -a 密码

 

设置密码

第一种

1、直接通过配置文件,搜索:requirepass foobared 找到该命令。

 

 

2、取消注释,foobared改为自己的密码即可。

3、重新运行服务,必须加上配置文件

redis-server.exe redis.windows.conf

 

第二种

1. 命令行设置密码。

运行cmd切换到redis根目录,先启动服务端

>redis-server.exe

 

另开一个cmd切换到redis根目录,启动客户端

>redis-cli.exe -h 127.0.0.1 -p 6379

 

客户端使用config get requirepass命令查看密码

>config get requirepass
1)"requirepass"
2)""    //默认空

 

客户端使用config set requirepass yourpassword命令设置密码

>config set requirepass 123456
>OK

 

一旦设置密码,必须先验证通过密码,否则所有操作不可用

>config get requirepass
(error)NOAUTH Authentication required

 

使用auth password验证密码

>auth 123456
>OK
>config get requirepass
1)"requirepass"
2)"123456"

 

也可以退出重新登录

redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456

命令行设置的密码在服务重启后失效,所以一般不使用这种方式。

 

库操作

切换数据库

select index

例如:select 0

 

删除当前库所有键

flushdb

 

删除所有库的所有键

flushall

 

键操作

当前库中的键

keys pattern

匹配当前库所有键:keys *

匹配当前库n开头的键:keys n*

 

重命名键

修改 key 的名称

rename key newkey

仅当 newkey 不存在时,将 key 改名为 newkey 。

renamenx key newkey

 

当前键是否存在

exists key

例如:exists t1 t2

 

删除键

del key key1 ...

 

判断键类型

type key

 

获取随机的一个键

randomkey

 

获取键数量

dbsize

 

获取键过期时间

以毫毛返回:pttl

以秒返回:ttl key

-1表示永久不过期

 

设置键过期时间

以毫秒设置:pexpire key  milliseconds

以秒设置:expire key seconds

 

移动键

move key db

例如:move test 1

 

字符串操作

设置值

单键设值:set key value

多键设值:mset key value key1 value1

键存在不设值:setnx key value

键全不在设值:msetnx key value key1 value1

设置过期时间:setex key seconds value

偏移量(不足时补,足够时替换):setrange key offset value

增加值:append key value

设置新值并返回上次值:getset key value

 

获取值

单键取值:get key

多键取值:mget key key1 .....

范围取值(0开始,顾头顾尾):getrange key start end

 

增量与减量

增一:incr key

减一:decr key

增多:incrby key increment

减多:decrby key increment

 

列表操作

添加值

尾添加:lpush key value value1 ...

首添加:rpush key value value1 ...

 

获取值

索引取值:lindex key index

切片取值:lrange key start end

 

更新值

索引更新:lset key index value

 

删除值

按数量删除:lrem key count value

删除首值,并返回:lpop key

删除尾值,并返回:rpop key

如果列表为空,等待删除首(0表示一直等待):blpop key key1 timeout

如果列表为空,等待删除尾(0表示一直等待):brpop key key1 timeout

删除自身列表的尾元素,添加到别的列表头部  :rpoplpush source destination

 

其它

键长度:llen key

截取(被截取的保留,其它删除):ltrim key start stop

 

集合操作

添加值

添加:sadd key value value1 ...

 

获取值

获取集合所有值:smembers key

随机返回集合中元素(不指定count,默认返回一个):srandmenber key count

 

删除值

删除:srmv key value value1 ...

随机删除,并返回该值:spop key

将指定值,从起始表到终表:smove source destination value

 

数学集合

键的交集:sinter key key1 ...

键的交集保存到另一个键当中:sinterstore destination key key1 ...

键的并集:sunion key key1 ...

键的交集保存到另一个键当中:sunionstore destination key key1 ...

键的差集:sdiff key key1 ...

键的交集保存到另一个键当中:sdiffstore destination key key1 ...

 

其它

获取成员数量:scard key

该键中是否有该值:sismember key value

 

有序集合操作

添加值

添加:zadd key score value score1 value1 ...

增量添加。如果该值存在则该score=score+增量值,不存在增量值为score值:

zincrby key increment value

 

获取值

查询成员排名,score从小到大排序:zrank key value

查询成员排名,score从大到小排序:zrevrank key value

索引取值,score从小到大排序(withscores带上后,会输出score):zrange key start stop [withscores]

索引取值,score从大到小排序(withscores带上后,会输出score):zrevrange key start stop [withscores]

分数范围取值,score从小到大排序:zrangebyscore key min max [withscores]

分数范围取值,score从大到小排序:zrevrangebyscore key min max [withscores]

 

删除值

删除:zrem key value value1 ...

索引删除:zremrangebyrank key start stop

分数删除:zremrangebyscore key min max

 

其它

键成员个数:zcard key

成员分数范围的个数:zcount key min max

 

散列操作

field:映射键

value:映射值

添加值

单值添加:hset key field value

多值添加:hmset key field value field value

值存在不添加,不存在添加:hsetnx key field value

 

获取值

单值获取:hget key field

多值获取:hmget key field field1 ...

该散列表所有键:hkeys key

该散列表所有值:hvals key

该散列表所有键和值:hgetall key

 

删除值

删除映射键:hdel key field field1 ...

 

增量与减量

增量(increment:需要增加的数,或要减的数):hincrby key field increment

例如:hincrby key field -1

 

其它

映射键是否存在:hexists key field

映射键个数:hlen key

 

以上是关于Redis的主要内容,如果未能解决你的问题,请参考以下文章

redis存储session配制方法

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

Redis缓存:java语言注释符号,附超全教程文档

spring boot 整合 redis

Redis 学习 —— 数据类型及操作