redis安装部署
-
redis官网:https://redis.io
# 下载redis wget https://github.com/redis/redis/archive/7.0.11.tar.gz # 解压 tar -zxvf 7.0.11.tar.gz # 复制 推荐复制到/usr/local/redis/目录下 cp redis-7.0.11 /usr/local/redis/ # 安装 sudo make && make install # 运行 redis-server # 测试 redis-cli set 'a' '123'
-
修改redis.conf
# 文件路径 /usr/local/redis/redis.conf, 建议先做备份 cp redis.conf redis.conf.bak # 监听的地址,默认是127.0.0.1,会导致只能本地访问,修改为0.0.0.0则可以在任何IP访问,生产环境不要设置为0.0.0.0(也可以直接注释) bind 0.0.0.0 # 守护进程,修改为yes后即可后台运行 daemonize yes # 摩玛设置后访问Redis必须设置密码 requirepass 1727 # 监听的端口 port 6379 # 工作目录,默认是当前目录,也就是运行redis-server是的命令,日志、持久化等文件会保存在这个文件 dir . # 数据库数量,设置为1,表示只使用1个库,默认有16个库,编号0-15 databases 1 # 设置redis能够使用的最大内存 maxmemory 512mb # 日志文件,默认为空,不记录日志,可以指定日志文件名 logfile "redis.log"
-
启动redis
# 进入redis安装目录 cd /usr/local/src/redis-7.0.11 # 启动,配置文件选定为我们刚才修改的配置文件 redis-server redis.conf
-
关闭redis
redis-cli -u 1727 shutdown
-
redis开机自启动配置
# 创建系统服务文件 vim /etc/systemd/system/redis.service # 文件内容 [Unit] #Description指定当前服务的简单描述。 Description=redis-server #After表示当前服务在network.target之后启动,可以指定多个服务,以空格隔开 After=network.target [Service] # ExecStart将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。 Type=forking # ExecStart指定启动进程时执行的命令。 # ExecReload指定当该服务被要求重新载入配置时所执行的命令。另外,还有一个特殊的环境变量 $MAINPID 可用于表示主进程的PID,例如可以这样使用:/bin/kill -HUP $MAINPID。强烈建议将 ExecReload= 设为一个能够确保重新加载配置文件的操作同步完成的命令行。 ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-7.0.11/redis.conf #web服务设置私有/tmp或/var/tmp目录 PrivateTmp=true [Install] # “WantedBy=multi-user.target”表示当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。 WantedBy=multi-user.target
-
重新加载系统服务
systemctl daemon-reload
-
redis系统命令
# 启动 systemctl start redis # 关闭 systemctl stop redis # 重启 systemctl restart redis # 状态 systemctl status redis # 开机自启 systemctl enable redis # 关闭开机自启动 systemctl disabled redis
-
redis常见命令
# String 常见命令 SET [key] [value] # 添加或修改一个String类型的键值对 GET [key] MSET [key] [value] [key1] [value1]... MGET [key] [key1]... INCR [key] # 让一个key的值增加1 INCRBY [key] 4 # 让一个key的值增加指定数 INCRBYFLOAT [key] 3.14 SETNX [key] [value] # 不存在这个key才执行,不然不执行 SETEX [key] [seconds] [value] # 添加一个key并且设置有效期 # Hash 常见命令 HSET [key] [field] [value] HGET [key] [field] HMSET [key] [field] [value] [field] [vlaue]... HMGET [key] [field] [field]... HGETALL [key] HKEYS [key] HVALS [key] HINCRBY [key] [field] 4 HSETNX [key] [field] [value] # List 常见命令 LPUSH [key] [element] [element]... LPOP [key] # 取链表左边的值并弹出 RPUSH [key] [element] [element]... RPOP [key] LRANGE [key] start end # 取链表start到end的值,不弹出 BLPOP && BRPOP [key] [time] # 阻塞式获取 # Set 常见命令 SADD [key] [member]... SREM [key] [member]... SCARD [key] # 获得set中元素的个数 SISMEMBER [key] [member] # 判断一个元素是否存在于set中 SMEMBERS # 获得set中所有的元素 SINTER [key1] [key2] # 获得两个集合的交集 key1∩key2 SDIFF [key1] [key2] # 获得两个集合的差集 key1-key2 SUNION [key1] [key2] # 获得两个集合的并集 key1∪key2 # SortedSet 常见命令 # 这里的score是排序的依据 ZADD [key] [score] [member] # 存储数据 ZREM [key] [member] ZSCORE [key] [member] # 获得其中指定元素的score ZRANK [key] member # 获取其中指定元素的排名,从0开始 ZCARD [key] # 获得sorted set的元素个数 ZCOUNT [key] min max # 统计score在其中范围的元素的个数 ZINCRBY [key] increment member # 给指定元素的score增加increment ZRANGE [key] min max # 获得score的排名在其中范围内的元素,从0开始 ZRANGEBYSCORE [key] min max # 获得score在其中范围中的元素 ZDIFF、ZINTER、ZUNION [key1] [key2] # 同Set # 所有的默认升序,要降序就所有的命令的Z后面加上REV(reverse)即可。ps:ZREVADD # 其他常见命令 # KEYS:查看符合模板的所有key KEYS * # DEL:删除一个指定的key DEL k1 # EXISTS:判断key是否存在 EXISTS k1 # EXPIRE:给一个key设置有效期(秒数),有效期到时key会被自动删除 EXPIRE k1 20 # TTL k1:查看一个key的有效期,-1为永久,-2为过期或者没有,正数为秒数 TTL k1
-
java连接redis
# 修改配置文件 redis.conf protected-mode no # 查看防火墙状态 firewall-cmd --state # 防火墙添加redis端口 firewall-cmd --permanent --add-port=6379/tcp # 查看端口 firewall-cmd --permanent --query-port=6379/tcp firewall-cmd --permanent --list-ports # 重启防火墙 firewall-cmd --reload
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>
@Test public void testRedis() { Jedis jedis = new Jedis("192.168.131.128", 6379); System.out.println(jedis.ping()); }
-
redis设置密码
# 查看 config get requirepass # 设置 config set requirepass "new_password" # 如果redis重启,会丢失这个密码,为了持久生效,需要继续使用config的rewrite命令,这个命令会将当前的修改刷新到配置文件中,执行完这个命令后断开和重启都不会丢失这个密码了 config rewrite