Redis简介
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
缓存:在内存中
作用:提升访问速率
环境说明
主机名 | IP |
---|---|
localhost | 192.168.175.150 |
下载Redis并解压
[root@localhost ~]# ls
anaconda-ks.cfg redis-6.0.6.tar.gz
[root@localhost ~]# tar xf redis-6.0.6.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg redis-6.0.6 redis-6.0.6.tar.gz
安装编译工具
[root@localhost ~]# yum -y install gcc gcc-c++
直接make编译
[root@localhost redis-6.0.6]# make
此时会发现报错
解决方法:升级编译器的版本,因为gcc版本一定要5.3以上
查看gcc版本
[root@localhost redis-6.0.6]# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
目标:x86_64-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
线程模型:posix
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
升级
[root@localhost redis-6.0.6]# yum -y install centos-release-scl && yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils && scl enable devtoolset-9 bash
再查看gcc版本
[root@localhost redis-6.0.6]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-9/root/usr --mandir=/opt/rh/devtoolset-9/root/usr/share/man --infodir=/opt/rh/devtoolset-9/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-9.3.1-20200408/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
删除解压包,重新编译
[root@localhost ~]# rm -rf redis-6.0.6
[root@localhost ~]# tar xf redis-6.0.6.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg redis-6.0.6 redis-6.0.6.tar.gz
[root@localhost ~]# cd redis-6.0.6
[root@localhost redis-6.0.6]# make
[root@localhost redis-6.0.6]# cd /root/redis-6.0.6/src 进入到src,此时已经成功创建redis-cli、redis-server
[root@localhost src]# ls
acl.c endianconv.o notify.c setcpuaffinity.o
acl.d evict.c notify.d setproctitle.c
acl.o evict.d notify.o setproctitle.d
adlist.c evict.o object.c setproctitle.o
adlist.d expire.c object.d sha1.c
adlist.h expire.d object.o sha1.d
adlist.o expire.o pqsort.c sha1.h
ae.c fmacros.h pqsort.d sha1.o
ae.d geo.c pqsort.h sha256.c
ae_epoll.c geo.d pqsort.o sha256.d
ae_evport.c geo.h pubsub.c sha256.h
ae.h geohash.c pubsub.d sha256.o
ae_kqueue.c geohash.d pubsub.o siphash.c
ae.o geohash.h quicklist.c siphash.d
ae_select.c geohash_helper.c quicklist.d siphash.o
anet.c geohash_helper.d quicklist.h slowlog.c
anet.d geohash_helper.h quicklist.o slowlog.d
anet.h geohash_helper.o rand.c slowlog.h
anet.o geohash.o rand.d slowlog.o
aof.c geo.o rand.h solarisfixes.h
aof.d gopher.c rand.o sort.c
aof.o gopher.d rax.c sort.d
asciilogo.h gopher.o rax.d sort.o
atomicvar.h help.h rax.h sparkline.c
bio.c hyperloglog.c rax_malloc.h sparkline.d
bio.d hyperloglog.d rax.o sparkline.h
bio.h hyperloglog.o rdb.c sparkline.o
bio.o intset.c rdb.d stream.h
bitops.c intset.d rdb.h syncio.c
bitops.d intset.h rdb.o syncio.d
bitops.o intset.o redisassert.h syncio.o
blocked.c latency.c redis-benchmark testhelp.h
blocked.d latency.d redis-benchmark.c t_hash.c
blocked.o latency.h redis-benchmark.d t_hash.d
childinfo.c latency.o redis-benchmark.o t_hash.o
childinfo.d lazyfree.c redis-check-aof timeout.c
childinfo.o lazyfree.d redis-check-aof.c timeout.d
cluster.c lazyfree.o redis-check-aof.d timeout.o
cluster.d listpack.c redis-check-aof.o t_list.c
cluster.h listpack.d redis-check-rdb t_list.d
cluster.o listpack.h redis-check-rdb.c t_list.o
config.c listpack_malloc.h redis-check-rdb.d tls.c
config.d listpack.o redis-check-rdb.o tls.d
config.h localtime.c redis-cli tls.o
config.o localtime.d redis-cli.c tracking.c
connection.c localtime.o redis-cli.d tracking.d
connection.d lolwut5.c redis-cli.o tracking.o
connection.h lolwut5.d redismodule.h t_set.c
connection.o lolwut5.o redis-sentinel t_set.d
connhelpers.h lolwut6.c redis-server t_set.o
crc16.c lolwut6.d redis-trib.rb t_stream.c
crc16.d lolwut6.o release.c t_stream.d
crc16.o lolwut.c release.d t_stream.o
crc16_slottable.h lolwut.d release.h t_string.c
crc64.c lolwut.h release.o t_string.d
crc64.d lolwut.o replication.c t_string.o
crc64.h lzf_c.c replication.d t_zset.c
crc64.o lzf_c.d replication.o t_zset.d
crcspeed.c lzf_c.o rio.c t_zset.o
crcspeed.d lzf_d.c rio.d util.c
crcspeed.h lzf_d.d rio.h util.d
crcspeed.o lzf_d.o rio.o util.h
db.c lzf.h scripting.c util.o
db.d lzfP.h scripting.d valgrind.sup
db.o Makefile scripting.o version.h
debug.c memtest.c sdsalloc.h ziplist.c
debug.d memtest.d sds.c ziplist.d
debugmacro.h memtest.o sds.d ziplist.h
debug.o mkreleasehdr.sh sds.h ziplist.o
defrag.c module.c sds.o zipmap.c
defrag.d module.d sentinel.c zipmap.d
defrag.o module.o sentinel.d zipmap.h
dict.c modules sentinel.o zipmap.o
dict.d multi.c server.c zmalloc.c
dict.h multi.d server.d zmalloc.d
dict.o multi.o server.h zmalloc.h
endianconv.c networking.c server.o zmalloc.o
endianconv.d networking.d setcpuaffinity.c
endianconv.h networking.o setcpuaffinity.d
把客户端和服务端放到/usr/bin位置去
[root@localhost src]# cp redis-cli redis-server /usr/bin/
[root@localhost ~]# which redis-cli
/usr/bin/redis-cli
[root@localhost ~]# which redis-server
/usr/bin/redis-server
启动redis-server
[root@localhost ~]# redis-server
86415:C 12 Aug 2020 21:40:47.005 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
86415:C 12 Aug 2020 21:40:47.005 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=86415, just started
86415:C 12 Aug 2020 21:40:47.005 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
86415:M 12 Aug 2020 21:40:47.006 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.0.6 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 86415
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
86415:M 12 Aug 2020 21:40:47.009 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
86415:M 12 Aug 2020 21:40:47.009 # Server initialized
86415:M 12 Aug 2020 21:40:47.009 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
86415:M 12 Aug 2020 21:40:47.009 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
86415:M 12 Aug 2020 21:40:47.010 * Ready to accept connections
[root@localhost ~]# ss -antl //6379端口号已启动
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::6379 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
连接Redis
[root@localhost ~]# redis-cli
set用法
[root@localhost ~]# redis-cli
127.0.0.1:6379> set a 10 //设置a=10
OK
get用法
127.0.0.1:6379> get a //获取a的值
"10"
也可以在redis外面设置
[root@localhost ~]# redis-cli get a
"10"
[root@localhost ~]# redis-cli set b 20
OK
[root@localhost ~]# redis-cli get b
"20"
把配置文件放到该放的位置即/etc
[root@localhost ~]# cd redis-6.0.6
[root@localhost redis-6.0.6]# ls
00-RELEASENOTES deps README.md runtest-moduleapi tests
BUGS INSTALL redis.conf runtest-sentinel TLS.md
CONTRIBUTING Makefile runtest sentinel.conf utils
COPYING MANIFESTO runtest-cluster src
[root@localhost redis-6.0.6]# cp redis.conf /etc/
修改配置文件去设置密码
[root@localhost ~]# vim /etc/redis.conf
# IMPORTANT NOTE: starting with Redis 6 "requirepass" is just a compatiblity
# layer on top of the new ACL system. The option effect will be just setting
# the password for the default user. Clients will still authenticate using
# AUTH <password> as usually, or more explicitly with AUTH default <password>
# if they follow the new protocol: both will work.
#
requirepass linux20200812 //取消#号,并设置密码
把redis放在后台运行,如果后台是开启的需要关闭之后再输入下面命令
[root@localhost ~]# nohup redis-server /etc/redis.conf &
[1] 59743
[root@localhost ~]# nohup: 忽略输入并把输出追加到"nohup.out"
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:6379 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
登录进去此时需要密码
[root@localhost ~]# redis-cli
127.0.0.1:6379> set a 10
(error) NOAUTH Authentication required.
输入密码登录
127.0.0.1:6379> auth linux20200812
OK
redisx相关命令
APPEND追加一个值到key上
127.0.0.1:6379> APPEND mykey "hello"
(integer) 5
127.0.0.1:6379> APPEND mykey "world"
(integer) 10
127.0.0.1:6379> GET mykey
"helloworld"
AUTH接密码进入redis
127.0.0.1:6379> auth linux20200812
OK
BITCOUNT 统计key字节
127.0.0.1:6379> BITCOUNT mykey
(integer) 44
TIME返回当前服务器时间
127.0.0.1:6379> TIME
1) "1597242301"
2) "424832"
KEYS查看当前有多少key
127.0.0.1:6379> KEYS *
1) "mykey"
127.0.0.1:6379> quit
[root@localhost ~]#