文章目录
(跟着视频课敲一遍代码后总结)
视频课
【狂神说Java】Redis最新超详细版教程通俗易懂_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
官网
Redis
redis中文官方网站
不会的命令,在中文官网点击命令,进去查。

redis
解压目录:/opt/redis-6.2.1
拷贝的配置文件位置:/usr/local/bin/kconfig/redis.conf
dump.rdb文件位置:/usr/local/bin
数据目录:数据库的写入会在这个目录。rdb、aof文件也会写在这个目录。可以通过在redis-cli中用config get dir来获得其绝对路径。
redis启动和关闭
# 【shell】启动redis服务
[root@wu1 ~]# /usr/local/bin/redis-server /usr/local/bin/kconfig/redis.conf
[root@wu1 ~]# ps -ef | grep redis # 这个是狂神说的redis-server启动时
root 11725 1 0 11:26 ? 00:00:00 /usr/local/bin/redis-server 127.0.0.1:6379
root 11778 10486 0 11:26 pts/1 00:00:00 grep --color=auto redis
[root@wu1 ~]# ps -ef | grep redis # 这个是牛客网的redis-server启动时
redis 15445 1 0 11:59 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root 15478 15131 0 11:59 pts/3 00:00:00 grep --color=auto redis
# redis客户端连接===> 观察地址的变化,如果连接ok,是直接连上的,redis默认端口号 6379
[root@192 bin]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set k1 helloworld
OK
127.0.0.1:6379> get k1
"helloworld"
#【shell】ps显示系统当前进程信息
[root@192 myredis]# ps -ef|grep redis
# 【redis】关闭连接
127.0.0.1:6379> shutdown
not connected> exit
[root@wu1 ~]#
#杀死进程
[root@wu1 ~]# ps -ef|grep redis
root 12040 11737 0 12:24 pts/1 00:00:00 redis-cli -p 6379
root 22676 22013 0 15:17 pts/2 00:00:00 grep --color=auto redis
[root@wu1 ~]# kill -9 12040
[root@wu1 ~]# ps -ef|grep redis
root 23180 22013 0 15:26 pts/2 00:00:00 grep --color=auto redis
redis压力测试工具-----Redis-benchmark
# 测试一:100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能
[root@wu1 ~]# cd /usr/local/bin
[root@wu1 bin]# redis-benchmark -h localhost -p 6379 -c 100 -n 100000
redis有16个库,redis基本命令(dbsize、keys、select、flushdb、flushall)
# 查看 redis.conf ,里面有默认的配置:databases 16。即16个数据库。用0-15访问
# 不同库可以存不同数据
# Dbsize查看当前数据库的key的数量
127.0.0.1:6379> dbsize
(integer) 3
# 查看当前库中所有的key
127.0.0.1:6379> keys *
1) "key:__rand_int__"
2) "name"
3) "counter:__rand_int__"
# Select命令切换数据库
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]>
# Flushdb:清空当前库
127.0.0.1:6379[3]> flushdb
OK
# Flushall:清空全部的库
127.0.0.1:6379[3]> flushall
OK
redis基本命令(exists、move、expire、ttl、type)
# exists key 的名字,判断某个key是否存在
127.0.0.1:6379> EXISTS name
(integer) 1 #1,存在
127.0.0.1:6379> EXISTS name1
(integer) 0 #0,不存在
# move key db ---> 当前库就没有了,被移除了
127.0.0.1:6379> move name 1 # name和1中间有空格
(integer) 1 #移除成功
# expire key 秒钟:为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
# ttl key 查看还有多少秒过期,-1 表示永不过期,-2 表示已过期
127.0.0.1:6379> set name kuang
OK
127.0.0.1:6379> expire name 10
(integer) 1
127.0.0.1:6379> ttl name
(integer) 6
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2
# type key 查看你的key是什么类型
127.0.0.1:6379> set name kuang
OK
127.0.0.1:6379> type name
string
字符串String
# set、get、append、strlen、del
# 追加字符串。如果对不存在的 key 进行 APPEND ,等同于 SET key1 "hello
127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> append key1 "hello"
(integer) 7 # 字符长度
127.0.0.1:6379> get key1
"v1hello"
# 获取字符串的长度
127.0.0.1:6379> strlen key1
(integer) 7
127.0.0.1:6379> del key1 # 删除key
(integer) 1
###########################################################
#incr、dect、incrby、decrby 。
#incr、dect可以用于网页的浏览量+1/-1
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views #自增1
(integer) 1
127.0.0.1:6379> decr views #自减1
(integer) 0
127.0.0.1:6379> decr views
(integer) -1 #可以减为负数
127.0.0.1:6379> incrby views 10 #+10
(integer) 9
127.0.0.1:6379> decrby views 5 #-10
(integer) 4
#####################################################
# getrange 截取部分字符串。
# setrange 替换
127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> getrange key1 0 3 #截取部分字符串,下标从0开始。[0,3]
"hell"
127.0.0.1:6379> getrange key1 0 -1 #得到整个字符串,和"get key"是一样的
"hello"
127.0.0.1:6379> setrange key1 2 xx #
(integer) 5
127.0.0.1:6379> get key1
"hexxo"
####################################################################
# setex(set with expire)键秒值 # 设置过期时间
# setnx(set if not exist)# 不存在再设置。设置成功返回1,失败返回0。在分布式锁中会常使用。
127.0.0.1:6379> setex key3 30 "hello" #设置key3的值为“hello”,30秒后过期
OK
127.0.0.1:6379> ttl key3
(integer) 25
127.0.0.1:6379> setnx mykey "redis" #如果mykey不存在,就创建mykey,返回1
(integer) 1
127.0.0.1:6379> keys *
1) "mykey"
2) "key3"
127.0.0.1:6379> setnx mykey "MongoDB" #如果mykey存在,就不覆盖,返回0。如果set,即使mykey存在,也会覆盖掉。
(integer) 0
127.0.0.1:6379> get mykey
"redis"
127.0.0.1:6379> ttl key3
(integer) -2
###################################################################
# mset Mset 命令用于同时设置一个或多个 key-value 对。
# mget Mget 命令返回所有(一个或多个)给定 key 的值。
# 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
# msetnx 当所有 key 都成功设置,返回 1 。
# 如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。原子操作
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 # 同时设置多个值
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
3) "k3"
127.0.0.1:6379> mget k1 k2 k5 # 同时获取多个值
1) "v1"
2) "v2"
3) (nil)
127.0.0.1:6379> msetnx k1 vv k4 v4 # 如果不存在就创建,是一个原子性操作
(integer) 0
127.0.0.1:6379> get k4
(nil)
127.0.0.1:6379> get k1
"v1"
###############################################################
# 存储对象
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "2"
###############################################################
# getset(先get再set)
127.0.0.1:6379> getset db mongodb # 没有旧值,返回 nil
(nil)
127.0.0.1:6379> get db
"mongodb"
127.0.0.1:6379> getset db redis # 返回旧值 mongodb
"mongodb"
127.0.0.1:6379> get db
"redis"
expire name 10给key设置过期时间,可以用于单点登录、热点数据。
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
其他
一、
redis是单线程。
二、
二进制安全:它只关心二进制化的字符串,不关心字符串的具体格式,里面有啥字符,只会严格的按照二进制的数据存取,不会以某种特殊格式解析字符串。
三、

命令会有提示,不用担心不记得参数。
四、
redis命令不区分大小写。
127.0.0.1:6379> SET key2 value2
OK
五、
写value时,写字符串的地方加不加双引号都无所谓,因为它会自动识别。
127.0.0.1:6379> set key value
OK
127.0.0.1:6379> set key1 "value1"
OK
六、
list列表
lrem key count element。移除列表key的从左到右数count个element元素。
再其他
分布式和集群
1、分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc通信和调用,对外提供服务和组内协作。
2、集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。
开源协议
摘自:各种开源协议介绍 | 菜鸟教程
一、
BSD开源协议
BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。
很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
二、
GPL (GNU General Public License) :GNU通用公共许可协议。
Linux 采用了 GPL。
GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。
本文详细介绍Redis的基础操作、常用命令及应用场景,包括启动配置、压力测试、数据类型操作等,并对比分析了Redis与其他数据库的区别。
1346

被折叠的 条评论
为什么被折叠?



