Linux安装Redis
- 下载fedora的epel仓库
yum install epel-release
- 安装redis数据库
yum install redis
- 安装完毕后,使用下面的命令启动redis服务
# 启动redis
service redis start
# 停止redis
service redis stop
# 查看redis运行状态
service redis status
# 查看redis进程
ps -ef | grep redis
- 设置redis为开机自动启动
chkconfig redis on
- 进入redis服务
# 进入本机redis
redis-cli
# 列出所有key
keys *
# 设置key,value
set [key] [value]
# 通过key获取value
get [key]
- 修改redis默认端口和密码
1、打开配置文件
vi /etc/redis.conf
2、修改默认端口,查找 port 6379 修改为相应端口即可
3、修改默认密码,查找 requirepass foobared 将 foobared 修改为你的密码
4、使用配置文件启动 redis
redis-server /etc/redis.conf &
5、使用端口登录
redis-cli -h 127.0.0.1 -p 6179
Mac OS安装Redis
brew install redis
运行Redis
brew services start redis
在mac下,其配置文件路径是/usr/local/etc/redis.conf
redis主要需要配置的是监听端口和密码,mac和centos版本的配置文件内容一样。
默认情况下,redis监听的是127.0.0.1,可以改成某个ip地址或者0.0.0.0(表示监听所有ip)
bind 127.0.0.1
requirepass 密码
Docker安装Redis
docker pull redis:latest
运行容器
docker run -itd --name redis-test -p 6379:6379 redis
带路径运行容器
docker run -itd --name redis -p 6379:6379 --restart=always -v /home/redis/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data redis redis-server /etc/redis/redis.conf
-p 6379:6379:把容器内的6379端口映射到宿主机6379端口
–restart=always:启动docker时启动该容器
-v /home/redis/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf放到容器内的这个位置中
-v /home/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份
redis-server /etc/redis/redis.conf:按照这个redis.conf的配置启动
进入容器
docker exec -it redis-test /bin/bash
运行redis-cli
redis-cli
redis读写操作
set name tony
#OK
get name
#tony
配置密码
在启动容器的时候,就为其配置密码
# 启动容器的时候,并为其设置密码
docker run -d --name redis -p 6379:6379 redis --requirepass "123456"
在容器启动后,再为其配置密码
# 运行redis客户端
redis-cli
# 查看redis的密码
config get requirepass
# 设置redis的密码
config set requirepass yourPassword
# 认证
auth yourPassword
Redis-cli常用命令
1、redis-cli连接redis服务
无密码本地登录
redis-cli
指定ip、端口、密码
redis-cli -h [ip] -p [port] -a [pwd]
指定ip、端口、密码并清理redis缓存
redis-cli -h [ip] -p [port] -a [pwd] flushall
指定ip、端口、密码、数据库
redis-cli -h [ip] -p [port] -a [pwd] -n [db_number]
查看服务所有[部分]信息
使用info [section]查看
#查看所有信息
127.0.0.1:6379> info
#查看服务器信息
127.0.0.1:6379> info server
#查看持久化信息
127.0.0.1:6379> info persistence
2、redis库相关命令
切换到1号库;redis有16个初始化库,编号0到15,默认使用0号库
select 1
如果需要验证
auth [password]
查看当前库的key的数量
dbsize
删除当前库的全部数据
flushdb
删除所有库的全部数据
flushall
3、redis key相关命令
对key有操作的命令,统一返回值都是1或者0,成功为1,失败为0
查看当前库的全部key
keys *
判断某个key是否存在,存在返回1,不存在返回0
exists [key]
查看某个key的类型,如果key不存在,则返回none
type [key]
删除指定的key数据,成功返回1,失败返回0
del [key]
根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除后在后续异步操作
unlink [key]
查看某个key的过期时间,单位(秒),-1表示永不过期,-2表示已经过期
ttl [key]
给指定的key设置过期时间,单位(秒)
expire [key] 10
4、redis 字符串相关命令
set <key> <value>:添加一条数据 例如set k1 v1,添加key为k1,值为v1的数据
get <key>:得到某个key的数据,例如get k1,得到key为k1的值
append <key> <value>:将给定的value,追加到某key的原值的末尾,返回追加后的字符长度
strlen <key>:查询某key的值的长度
setnx <key> <value>:当key不存在的时候,才能添加成功,当key存在的时候,不能添加
incr <key>:将某个key的值,数字增加1,仅仅对数字起作用,如果为空,新增值为1
decr <key>:将某个key的值,数字减少1,仅仅对数字起作用,如果为空,新增值为-1
incrby/decrby <key> <步长>:将key中储存的数字值增减,自定义步长
mset <key1> <value1> <key2> <value2>:批量添加
mget <key1> <key2>:批量取值
msetnx <key1> <value1> <key2> <value2>:批量添加,当且仅当所有的key都不存在(因为原子性,一个失败则都失败)
getrange <key> <起始位置> <结束位置>:获取某个key值的范围,getrange k1 0 2,包含0位置的元素,和2位置的元素
setex <key> <过期时间> <value>:设置键值的同时设置过期时间(单位秒)
getset <key> <value>:设置新值,并返回旧值
5、redis 列表相关命令
lpush/rpush <key> <value1> <value2> <value3>:从左边,或者右边添加数据
lpop/rpop <key>:从左边,或者右边取出一个值,列表里这个值就不存在了
rpoplpush <key1> <key2>:从key1的右边取一个值,添加在key2的左边
lrange <key> <起始位置> <结束位置>:按照索引下角标得到元素(从左往右),当结束为值为-1时,代表得到多有,这个值还在列表中
lindex <key> <index>:按照索引,从左往右获得对应的值
llen <key>:获得列表长度
linsert <key> before/after <value> <newVlaue>: 在某个key下的某个值的前面/后面添加一个新的值
lrem <key> <n> <value>:删除某个key下,删除n个值为value的数据
lset <key> <index> <value>:将某个key下的某个下角标的值换成给定的值
6、redis 集合相关命令
sadd <key> <value1> <value2> <value3>:添加数据,如果值已经存在,忽略该值
smembers <key>:得到集合中所有的值
sismember <key> <value> :判断某个key中是否存在value,存在返回1,不存在返回0 scard <key>:返回集合的元素个数
srem <key> <value1> <value2>:删除某个key中的某些元素
spop <key>:从key中随机取出一个值,如果值没了,那么key就不在了
srandmember <key> <n>:从某个key中,取出n个值,不会从集合中删除
smove <key1> <key2> <value>:把集合中的一个值移动到另一个集合
sinter <key1> <key2>:取两个集合的交集
sunion <key1> <key2>:取两个集合的并集
sdiff <key1> <key2>:取两个集合的差集(在key1中的,不在key2中的)
7、redis 哈希相关命令
hset <key> <field> <value>:给某个key哈希表中的field键复制为value
hget <key> <field> :得到某个key哈希表中某个field的值
hmset <key> <field1> <value1> <field2> <value2>:批量加数据
hexists <key> <field1>:某个key哈希表中某个field是否存在
hkeys <key> :查看某个key哈希表中的全部field
hvals <key>:查看某个key哈希表中的全部value
hincrby <key> <field> <increment>:为某个key的哈希表中的某个field键的值加上响应的增量
hsetnx <key> <field> <value>:某个key哈希表中的field键复制为value,当且仅当key不存在的时候成功
8、redis 有序集合(Zset)相关命令
zadd <key> <score1> <value1><score2> <value2>:添加以一个过着多个元素,score为评分,集合按照从低到高及进行排序,评分可以重复
zrange <key> <start> <end> \[withscores\]:查一定范围的元素,end为-1时,查询所有,withscores加上他,连着评分一起查出
zrangebyscore <key> <min> <max> \[withscores\]:查询score评分在某个范围内的数据,从小到大排序
zrevrangebyscore <key> <max> <min> \[withscores\]:查询score评分在某个范围内的数据,从大到小排序
zincrby <key> <increment> <value>:为元素的score加上指定的增量
zrem <key> <value>:删除数据
zcount <key> <min> <max>:统计score评分在某个范围内的数据的数量
zrank <key> <value>:返回集合中的排序,排序从0开始