Centost7中Redis源码编译与安装

Centost7中Redis源码编译与安装

文章目录

  • Centost7中Redis源码编译与安装
  • 1.下载与安装
    • 1.下载
    • 2.安装
    • 3 .解决gcc未找到的问题
      • 1.能连网直接使用命令安装(本文的安装方式):
      • 2.不能连网:从安装镜像中找到对应的包进行安装
  • 2.redis.conf及hello world
    • 1.redis.conf文件
    • 2.启动redis
    • 3.关闭redis服务
  • 3.Redis启动后简单操作
    • 1. redis-benchmark [性能测试]
    • 2.Key(键)
    • 3.字符串(String)
    • 3.其他操作
  • 5. Java使用Jedis连接Redis服务器
    • 1.配置项
    • 2.java通过Jedis连接Redis服务器

基本环境:

操作系统:Linux Centos 7

Redis版本:redis-5.0.3.tar.gz,其他版本安装方式可参考此文档

1.下载与安装

查看centos 7 版本的命令

查看系统版本的命令
1. cat /etc/redhat-release 
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
2. rpm -q centos-release
[root@localhost ~]# rpm -q centos-release
centos-release-7-6.1810.2.el7.centos.x86_64查看内核命令:
1.uname -a
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
2. cat /proc/version
[root@localhost ~]#  cat /proc/version
Linux version 3.10.0-957.1.3.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) 
(gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 29 14:49:43 UTC 2018

1.下载

官网:https://redis.io/

2.安装

本文以redis-5.0.3.tar.gz版本为例

  1. 将下载好的redis-5.0.3.tar.gz文件复制到/opt目录中
  2. 解压:tar -zxvf redis-5.0.3.tar.gz
  3. 在解压后的redis-5.0.3目录下执行make命令,如果gcc未找到,则会出现如下错误
[root@localhost redis-5.0.3]# make
cd src && make all
make[1]: 进入目录“/opt/redis-5.0.3/src”CC Makefile.dep
make[1]: 离开目录“/opt/redis-5.0.3/src”
make[1]: 进入目录“/opt/redis-5.0.3/src”
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov red
is.info lcov-html Makefile.dep dict-benchmark
(cd ../deps && make distclean)
make[2]: 进入目录“/opt/redis-5.0.3/deps”
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
make[2]: 离开目录“/opt/redis-5.0.3/deps”
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settings
echo WARN=-Wall -W -Wno-missing-field-initializers >> .make-settings
echo OPT=-O2 >> .make-settings
echo MALLOC=jemalloc >> .make-settings
echo CFLAGS= >> .make-settings
echo LDFLAGS= >> .make-settings
echo REDIS_CFLAGS= >> .make-settings
echo REDIS_LDFLAGS= >> .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb   -I../
deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic >> .make-settings
(cd ../deps && make hiredis linenoise lua jemalloc)
make[2]: 进入目录“/opt/redis-5.0.3/deps”
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
(echo "" > .make-cflags)
(echo "" > .make-ldflags)
MAKE hiredis
cd hiredis && make static
make[3]: 进入目录“/opt/redis-5.0.3/deps/hiredis”
gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
make[3]: gcc:命令未找到
make[3]: *** [net.o] 错误 127
make[3]: 离开目录“/opt/redis-5.0.3/deps/hiredis”
make[2]: *** [hiredis] 错误 2
make[2]: 离开目录“/opt/redis-5.0.3/deps”
make[1]: [persist-settings] 错误 2 (忽略)CC adlist.o
/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 错误 127
make[1]: 离开目录“/opt/redis-5.0.3/src”
make: *** [all] 错误 2
[root@localhost redis-5.0.3]# 

3 .解决gcc未找到的问题

gcc是Linux下的一个编译程序,是C程序的编译工具

解决方法:

1.能连网直接使用命令安装(本文的安装方式):

  1. 使用yum install gcc-c++ 命令进行安装
---> 软件包 kernel-headers.x86_64.0.3.10.0-957.1.3.el7 将被 安装
--> 解决依赖关系完成依赖关系解决=========================================================================================================================Package                         架构                   版本                               源                       大小
=========================================================================================================================
正在安装:gcc-c++                         x86_64                 4.8.5-36.el7                       base                    7.2 M
为依赖而安装:cpp                             x86_64                 4.8.5-36.el7                       base                    5.9 Mgcc                             x86_64                 4.8.5-36.el7                       base                     16 Mglibc-devel                     x86_64                 2.17-260.el7                       base                    1.1 Mglibc-headers                   x86_64                 2.17-260.el7                       base                    683 kkernel-headers                  x86_64                 3.10.0-957.1.3.el7                 updates                 8.0 Mlibmpc                          x86_64                 1.0.1-3.el7                        base                     51 klibstdc++-devel                 x86_64                 4.8.5-36.el7                       base                    1.5 Mmpfr                            x86_64                 3.1.1-4.el7                        base                    203 k事务概要
=========================================================================================================================
安装  1 软件包 (+8 依赖软件包)总下载量:41 M
安装大小:84 M
Is this ok [y/d/N]: y如果出现下面内容则说明安装成功:
已安装:gcc-c++.x86_64 0:4.8.5-36.el7                                                                                         
作为依赖被安装:cpp.x86_64 0:4.8.5-36.el7              gcc.x86_64 0:4.8.5-36.el7                   glibc-devel.x86_64 0:2.17-260.el7 glibc-headers.x86_64 0:2.17-260.el7    kernel-headers.x86_64 0:3.10.0-957.1.3.el7  libmpc.x86_64 0:1.0.1-3.el7       libstdc++-devel.x86_64 0:4.8.5-36.el7  mpfr.x86_64 0:3.1.1-4.el7       安装后使用下面命令查看版本
gcc -v
  1. gcc安装后,再使用make命令安装,如果出现了下面错误,需要使用make distclean 命令清理下:

    zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

[root@localhost redis-5.0.3]# make
cd src && make all
make[1]: 进入目录“/opt/redis-5.0.3/src”CC Makefile.dep
make[1]: 离开目录“/opt/redis-5.0.3/src”
make[1]: 进入目录“/opt/redis-5.0.3/src”CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录#include <jemalloc/jemalloc.h>^
编译中断。
make[1]: *** [adlist.o] 错误 1
make[1]: 离开目录“/opt/redis-5.0.3/src”
make: *** [all] 错误 2
[root@localhost redis-5.0.3]# 解决方法:使用make distclean 清理后再make
  1. 解决方法:使用make distclean 清理后再make
  2. 在使用make安装,安装成功后,则会显示下面信息:

Hint: It's a good idea to run 'make test' ;)make[1]: 离开目录“/opt/redis-5.0.3/src”
[root@localhost redis-5.0.3]# 
  1. make test可以不执行,如果执行make test ,有可能出现tcl未安装的情况,如下
[root@localhost redis-5.0.3]# make test
cd src && make test
make[1]: 进入目录“/opt/redis-5.0.3/src”CC Makefile.dep
make[1]: 离开目录“/opt/redis-5.0.3/src”
make[1]: 进入目录“/opt/redis-5.0.3/src”
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 错误 1
make[1]: 离开目录“/opt/redis-5.0.3/src”
make: *** [test] 错误 2
[root@localhost redis-5.0.3]# 
  1. 安装TCL

    TCL官网:http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html

    tcl 安装步骤:

--安装wget命令:yum -y install wget
--能连网就使用wget命令安装tcl
wget https://downloads.sourceforge.net/tcl/tcl8.6.9-src.tar.gz
# 2021-10-12 wget https://downloads.sourceforge.net/tcl/tcl8.6.11-src.tar.gz
1.然后使用解压命令将tcl8.6.9-src.tar.gz解压到/usr/local/目录下:
tar -zxvf tcl8.6.9-src.tar.gz -C /usr/local/ 
2. 执行命令:
[root@localhost]# cd /usr/local/tcl8.6.9/unix/
3. 执行命令
[root@localhost unix]# ./configure
4.执行命令:
[root@localhost unix]# make
5.执行命令:
[root@localhost unix]# make install5.切换至目录下执行make test
[root@localhost ~]# cd /opt/redis-5.0.3
[root@localhost redis-5.0.3]# make test如果test通过后会在最后输出 "所有测试都通过了,没有错误!"的信息,如下:
\o/ All tests passed without errors!
  1. 使用make install 命令完成最终的安装
切换至 redis-5.0.3目录下,输入 make instll 命令完成最终的安装,如下
[root@localhost ~]# cd /opt/redis-5.0.3
[root@localhost redis-5.0.3]# 
[root@localhost redis-5.0.3]# make install输出如下信息表示安装成功:
[root@localhost redis-5.0.3]# make install
cd src && make install
make[1]: 进入目录“/opt/redis-5.0.3/src”Hint: It's a good idea to run 'make test' ;)INSTALL installINSTALL installINSTALL installINSTALL installINSTALL install
make[1]: 离开目录“/opt/redis-5.0.3/src”
[root@localhost redis-5.0.3]#

2.不能连网:从安装镜像中找到对应的包进行安装

(安装过程忽略)

从安装Linux的安装镜像文件中找到对应的rpm文件(上网查对应文件),然后使用下面命令进行安装
rpm -ivh xxxx.rpm 回车

2.redis.conf及hello world

Redis安装完成后在 /usr/local/bin/目录下可查看

[root@MiWiFi-R1CL-srv]# cd /usr/local/bin/
[root@MiWiFi-R1CL-srv bin]# ls -l
总用量 32716
-rwxr-xr-x. 1 root root 4366576 13 21:06 redis-benchmark
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-check-aof
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-check-rdb
-rwxr-xr-x. 1 root root 4801824 13 21:06 redis-cli
lrwxrwxrwx. 1 root root      12 13 21:06 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-server
-rwxr-xr-x. 1 root root   30291 13 20:59 sqlite3_analyzer
-rwxr-xr-x. 1 root root    8664 13 20:59 tclsh8.6

1.redis.conf文件

  1. 安装完成后,先将redis-5.0.3目录下的redis.conf文件拷贝到其他地放进行修改
1.在根目录下新建myredis目录:
mkdir myredis
2.redis.conf文件拷贝:
cp /opt/redis-5.0.3/redis.conf /myredis/
  1. /myredis/redis.conf文件修改
vim /myredis/redis.conf 打开文件,然后找到daemonize no,【shift+$ 移动到行末】
1.将daemonize no 修改为 daemonize yes

2.启动redis

1.进入bin目录下
[root@MiWiFi-R1CL-srv ~]# cd /usr/local/bin/
[root@MiWiFi-R1CL-srv bin]# ls -l
总用量 32716
-rwxr-xr-x. 1 root root 4366576 13 21:06 redis-benchmark
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-check-aof
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-check-rdb
-rwxr-xr-x. 1 root root 4801824 13 21:06 redis-cli
lrwxrwxrwx. 1 root root      12 13 21:06 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-server
-rwxr-xr-x. 1 root root   30291 13 20:59 sqlite3_analyzer
-rwxr-xr-x. 1 root root    8664 13 20:59 tclsh8.6
[root@MiWiFi-R1CL-srv bin]2.用命令查看后台redis服务有么有启动
[root@MiWiFi-R1CL-srv bin]# ps -ef|grep redis
root     27171 27146  0 21:45 pts/0    00:00:00 grep --color=auto redis3.启动redis服务,这里不启动出厂默认redis.conf,而是启动我们自己配置的 /myredis/redis.conf
[root@MiWiFi-R1CL-srv bin]# redis-server /myredis/redis.conf 
27172:C 03 Jan 2019 21:47:34.945 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
27172:C 03 Jan 2019 21:47:34.945 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=27172, just started
27172:C 03 Jan 2019 21:47:34.945 # Configuration loaded4.启动redis客户端
[root@MiWiFi-R1CL-srv bin]# redis-cli -p 6379
127.0.0.1:6379> 
输入ping命令验证
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 5.输出hello world
127.0.0.1:6379> set k1 "hell world"
OK
127.0.0.1:6379> get k1
"hell world"
127.0.0.1:6379> 6.再次查看redis后台进程有么有启动
[root@MiWiFi-R1CL-srv ~]# ps -ef|grep redis
root     27173     1  0 21:47 ?        00:00:00 redis-server 127.0.0.1:6379
root     27179 27146  0 21:49 pts/0    00:00:00 redis-cli -p 6379
root     27199 27181  0 21:52 pts/1    00:00:00 grep --color=auto redis

3.关闭redis服务

命令:SHUTDOWN [NOSAVE|SAVE]1.关闭redis服务并退出
127.0.0.1:6379> SHUTDOWN
not connected> exit2.关闭后查看后台redis服务有没有
[root@MiWiFi-R1CL-srv bin]# ps -ef|grep redis
root     27203 27146  0 22:00 pts/0    00:00:00 grep --color=auto redis
[root@MiWiFi-R1CL-srv bin]# 

3.Redis启动后简单操作

1. redis-benchmark [性能测试]

1.进入bin目录
[root@MiWiFi-R1CL-srv bin]# ls -l /usr/local/bin 
总用量 32720
-rw-r--r--. 1 root root     112 13 21:58 dump.rdb
-rwxr-xr-x. 1 root root 4366576 13 21:06 redis-benchmark
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-check-aof
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-check-rdb
-rwxr-xr-x. 1 root root 4801824 13 21:06 redis-cli
lrwxrwxrwx. 1 root root      12 13 21:06 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 8090008 13 21:06 redis-server
-rwxr-xr-x. 1 root root   30291 13 20:59 sqlite3_analyzer
-rwxr-xr-x. 1 root root    8664 13 20:59 tclsh8.6
[root@MiWiFi-R1CL-srv bin]#  redis-benchmark 
  1. 单进程:单进程模型来处理客户端的请求。对读写等事件的响应是通过epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率【Epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。】
  2. 出厂默认16个数据库:库的顺序类似数组下标从零开始,初始默认使用零号库
  3. select命令切换数据库:select index,index为库的下标,index=库总数-1
  4. DBSIZE - :查看当前数据库下key的数量
  5. keys pattern: 如 keys * 查看当前库下所有的key,keys k? 查看以k开头的所有key
  6. FLUSHDB [ASYNC] :清空当期库
  7. FLUSHALL [ASYNC]:通杀所有库
  8. 统一密码管理:16个库都使用同一个密码,要么都OK,要么一个也连不上
  9. 默认端口:6379
  10. Redis索引都是从0开始

2.Key(键)

1.keys pattern  查看当期库所有的key
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"2.set key value [expiration EX seconds|PX milliseconds] [NX|XX]:设置key及key的值
127.0.0.1:6379> set k1 "Hello World!"
OK3.get key :根据key获取值
127.0.0.1:6379> get k1
"Hello World!"4.EXISTS key [key ...]  判断某个key或某些key是否存在,存在则返回存在key的个数,不存在则返回 0
127.0.0.1:6379> exists k1 k2
(integer) 25. move key db  将某个key从当前库移动到其他库中,移动后当前库中就不存在了,成功返回1,失败返回0
【注:如果其他库已经存在当前key则会移动失败,直接返回0】
127.0.0.1:6379> move k3 1
(integer) 16.EXPIRE key seconds 设置key的过期时间,key过期后就不存在了,单位:秒
127.0.0.1:6379> EXPIRE k3 10
(integer) 07. TTL key 查看key还有多少秒过期,返回-1:表示永不过期;返回-2:表示已经过期
127.0.0.1:6379> TTL k1
(integer) -18. TYPE key  查看key的数据类型
127.0.0.1:6379> type k1
string9. DEL key [key ...] 删除key或多个key
127.0.0.1:6379> DEL k2
(integer) 1

3.字符串(String)

1.单值单value

1.set/get/append/strlen.....2.incr/incrby/decr/decrby 一定操作的是数字才能进行加与减
INCRBY key  每次+1
INCRBY key increment 每次+increment
DECRBY key 每次-1
DECRBY key decrement  每次-decrement3.GETRANGE key start end/SETRANGE key offset value
GETRANGE: 获取指定区间范围的值,类似于java中的substring
127.0.0.1:6379> GETRANGE k1 0 -1   0到-1表示全部
"hello world"SETRANGE: 设置指定区间范围的值,设值key的值,从offset 开始设置其值为value,类似java中的replace 
127.0.0.1:6379> SETRANGE k1 2 XXX
(integer) 11
127.0.0.1:6379> get k1
"heXXX world"4. SETEX key seconds value 设置key的值为value存活seconds秒后过期消失5. SETNX key value  判断key是否存在,如果存在则忽略,否则设置key的值为value
127.0.0.1:6379> setnx k1 'aaa'
(integer) 0
127.0.0.1:6379> 127.0.0.1:6379> setnx k5 'aaa'
(integer) 1
127.0.0.1:6379> 6. MSET key value [key value ...]/MGET key [key ...] 设置/获取多个键值对
127.0.0.1:6379> mset k1 aaa k2 bbb k3 ccc
OK127.0.0.1:6379> mget k1 k2 k3
1) "aaa"
2) "bbb"
3) "ccc"7. MSETNX key value [key value ...]  设置多个键值对,如果其中一个key已经存在则本次操作全部忽略--k1已经存在,则忽略本次操作,即k1不会改变,k5为nil
127.0.0.1:6379> msetnx k1 xxx k5 yyy 
(integer) 0--查看k1 k5
127.0.0.1:6379> mget k1 k5 
1) "aaa"
2) (nil)--查看k1 到 k5 的值
127.0.0.1:6379> mget k1 k2 k3 k4 k5
1) "aaa"
2) "bbb"
3) "ccc"
4) (nil)
5) (nil)--msetnx 设置 k4 k5的值
127.0.0.1:6379> msetnx k4 xxx k5 yyy
(integer) 1--设置完 k4 k5后查看k1 到 k5 的值
127.0.0.1:6379> mget k1 k2 k3 k4 k5
1) "aaa"
2) "bbb"
3) "ccc"
4) "xxx"
5) "yyy"8. GETSET key value  先get在set
127.0.0.1:6379> getset k6 ttt
(nil)

3.其他操作

详见官方文档:https://redis.io/docs

数据类型文档:https://redis.io/docs/data-types

5. Java使用Jedis连接Redis服务器

1.配置项

  1. 需关闭Linux防火墙
--1.查看防火墙状态
[root@MiWiFi-R1CL-srv ~]# firewall-cmd --state
running
--2.关闭防火墙
[root@MiWiFi-R1CL-srv bin]# systemctl stop firewalld.service

不关防火墙连接是错误如下

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host 192.31.1.122:6379at redis.clients.jedis.Connection.connect(Connection.java:204)at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:100)at redis.clients.jedis.Connection.sendCommand(Connection.java:125)at redis.clients.jedis.Connection.sendCommand(Connection.java:120)at redis.clients.jedis.BinaryClient.ping(BinaryClient.java:113)at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:186)at com.yuan.RedisClient.main(RedisClient.java:16)
Caused by: java.net.SocketTimeoutException: connect timed outat java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:589)at redis.clients.jedis.Connection.connect(Connection.java:181)... 6 more
  1. 修改 /myredis/redis.conf文件相关配置项
1.redis默认只能通过本地localhost (127.0.0.1)进行连接,如果使用192.168.31.122连接则会报一下错误
(error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the lookback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the --portected-mode no option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.解决方法:注释掉redis.conf文件中的 bind 127.0.0.1 即: #bind 127.0.0.12.Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程,使用jedis连接redis时需设置为出厂默认的no,即在redis.conf中找到daemonize,将其设置为: daemonize no  3.设置保护模式,将出厂默认设置:protected-mode yes 设置为:protected-mode no   

2.java通过Jedis连接Redis服务器

  1. 准备Jedis的jar包,使用maven下载Jedis的jar包
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.0.1</version>
</dependency>			
  1. 编写测试类代码
public class RedisClientTest {@Testpublic void redisClient(){Jedis jedis = new Jedis("192.168.31.122",6379);System.out.println(jedis.ping());jedis.set("k1","hello world!");System.out.println(jedis.get("k1"));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卷积和滤波对图像操作的区别

目录 问题引入 解释 卷积 滤波 问题引入 卷积和滤波是很相似的&#xff0c;都是利用了卷积核进行操作 那么他们之间有什么区别呢&#xff1f; 卷积&#xff1a;会影响原图大小 滤波&#xff1a;不会影响原图大小 解释 卷积 我们用这样一段代码来看 import torch.nn as …

黑豹程序员-MyBatisPlus封装SQL的where条件的对象 QueryWrapper

说明 我们使用MybatisPlus时&#xff0c;我们可以不直接通过SQL操作数据库&#xff0c;而使用面向对象的方式。 其中遇到一个问题&#xff0c;就是如何用面向对象的方式实现 SQL中的where条件拼接。 MybatisPlus很体贴&#xff0c;它提供了一个QueryWrapper&#xff0c;查询包…

【AI接口】语音版、文心一言大模型和AI绘图、图片检测API

文章目录 一、语音版大模型AI1、接口2、请求参数3、请求参数示例4、接口返回示例 二、AI图片鉴黄合规检测API1、接口2、请求参数3、请求参数示例4、接口返回示例5、报错说明6、代码开源 三、人工智能AI绘画API1、接口2、请求参数3、请求参数示例4、接口返回示例5、AI绘画成果展…

Gin 框架之用户密码加密

文章目录 一、引入二、密码加密位置三、如何加密四、bcrypt 库加密4.1 介绍4.2 优点&#xff1a;4.3 使用 五、小黄书密码加密实践 一、引入 Gin是一个用Go语言编写的Web框架&#xff0c;而用户密码的加密通常是在应用程序中处理用户身份验证时的一个重要问题。 通常敏感信息…

3D可视化:陶瓷烧制的未来之路

陶瓷&#xff0c;这一古老的艺术形式&#xff0c;见证了中华文明的辉煌。然而&#xff0c;随着时代的变迁&#xff0c;传统的陶瓷烧制过程正面临着诸多挑战。如何将这门千年技艺传承下去&#xff0c;并在现代社会中焕发新的光彩&#xff1f;3D可视化技术为我们打开了一扇通往未…

如何使用c++max函数

在 C 中&#xff0c;使用 max 函数通常意味着你想比较两个值并返回其中较大的一个。这个函数是标准库中 <algorithm> 头文件的一部分。下面是如何使用它的基本步骤&#xff1a; 包含 <algorithm> 头文件&#xff1a;这是使用 max 函数的先决条件&#xff0c;因为它…

基于springboot+vue的蜗牛兼职网的设计与实现系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

第02章_变量与运算符(关键字,标识符,变量,基本数据类型,进制,运算符,字符集)

文章目录 第02章_变量与运算符本章专题与脉络1. 关键字&#xff08;keyword&#xff09;2. 标识符( identifier)3. 变量3.1 为什么需要变量3.2 初识变量3.3 Java中变量的数据类型3.4 变量的使用3.4.1 步骤1&#xff1a;变量的声明3.4.2 步骤2&#xff1a;变量的赋值 4. 基本数据…

ROS学习笔记9——ROS三种通信机制的比较

三种通信机制中&#xff0c;参数服务器是一种数据共享机制&#xff0c;可以在不同的节点之间共享数据&#xff0c;话题通信与服务通信是在不同的节点之间传递数据的&#xff0c;三者是ROS中最基础也是应用最为广泛的通信机制。 这其中&#xff0c;话题通信和服务通信有一定的相…

net.ipv4.ip_forward

net.ipv4.ip_forward 是 Linux 内核中的一个参数&#xff0c;用于控制 IP 转发功能。IP 转发是指在一个路由器或者网络设备上接收到一个 IP 数据包后&#xff0c;根据目标 IP 地址的路由信息将数据包发送到合适的接口&#xff0c;使其能够到达目标主机。 在 Linux 中&#xff…

Elastic Stack 8.12:通过对 ES|QL 等的改进增强了向量搜索

作者&#xff1a;来自 Elastic Tyler Perkins, Shani Sagiv, Gilad Gal, Ninoslav Miskovic Elastic Stack 8.12 构建于 Apache Lucene 9.9&#xff08;有史以来最快的 Lucene 版本&#xff09;之上&#xff0c;基于我们对标量量化和搜索并发性的贡献&#xff0c;为文本、向量和…

1818:红与黑【解析】-------深度优先搜索

1818:红与黑 描述 有一间长方形的房子&#xff0c;地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上&#xff0c;只能向相邻的黑色瓷砖移动。请写一个程序&#xff0c;计算你总共能够到达多少块黑色的瓷砖。 输入 包括多个数据集合。每个数据集合的第一行…

仿“今日头条”的开源多媒体资讯发布系统

伴随着互联网的普及、用户的时间碎片化&#xff0c;使得信息传播方式发生了巨大变化&#xff0c;因此我们看到微信、微博、今日头条、抖音、快手等平台迅速崛起。这些新的信息传播方式给广大用户带来了极大的便利&#xff0c;同时也给每个人的思想和生活带来了潜移默化的影响。…

代码随想录 Leetcode459. 重复的子字符串(KMP算法)

题目&#xff1a; 代码&#xff08;首刷看解析 KMP算法 2024年1月18日&#xff09;&#xff1a; class Solution { public:void getNext(string& s,vector<int>& next) {int j 0;next[0] j;for (int i 1; i < s.size(); i) {while (j > 0 && s…

三大3D引擎对比,直观感受AMRT3D渲染能力

作为当前热门的内容呈现形式&#xff0c;3D已经成为了广大开发者、设计师工作里不可或缺的一部分。 用户对于3D的热衷&#xff0c;源于其带来的【沉浸式体验】和【超仿真视觉效果】。借此我们从用户重点关注的四个3D视觉呈现内容&#xff1a; 材质- 呈现多元化内容水效果- 展…

Docker基本管理(2)

目录 一、资源控制 二、数据管理 三、端口映射 四、容器互联 Docker基本管理&#xff08;1&#xff09;&#xff1a;Docker基本管理&#xff08;1&#xff09;-CSDN博客 一、资源控制 1、cpu控制 cgroups的四大功能&#xff1a; 资源限制&#xff1a;可以将资源限制应用于…

【Git】常用的Git操作集合

常用的Git操作集合 1. 分支操作1.1 查看本地所有分支git branch 1.2 查看所有分支&#xff08;包含本地远程仓库&#xff09;git branch -a 1.3 切换分支git checkout test 2. 常用基本操作2.1 查看 git 各存储区内(文件)状态git status 2.2 查看工作区与暂存区文件差异git dif…

揭开UI设计的神秘面纱:如何打造一款让用户爱不释手的移动APP

文章目录 一、目标用户分析二、设计风格和色彩搭配三、布局和导航设计四、交互设计五、视觉元素设计六、响应式设计七、测试和优化八、持续更新和迭代九、团队协作和沟通十、学习和成长《移动APP UI设计与制作(微课版)》编辑推荐内容简介目录 《Flutter入门经典&#xff08;移动…

Linux/Uinx Makefile介绍以及使用方法和代码演示

Linux/Uinx Makefile介绍以及使用方法和代码演示 在写完我们的C语言程序之后&#xff0c;我们通常可以使用shell脚本来编译和链接C语言程序的源文件&#xff0c;但是这种方式有一个缺点&#xff1a;当我们更改了几个源文件的名称之后&#xff0c;shell脚本就会编译失败&#x…

【vue】ant-col多列栅格式的表单排列方式布局异常:

文章目录 一、效果&#xff1a;二、解决&#xff1a;三、问题&#xff1a; 一、效果&#xff1a; 二、解决&#xff1a; 在row中添加布局类型&#xff1a;type“flex” 三、问题&#xff1a; 后期正式环境还是存在该问题 >>>.ant-form-item {max-height: 32px; }多…