怎么做 废旧回收网站,做的网站怎么放到域名,深圳网站优化团队,网站制作岗位职责Redis 是一个基于内存的key-value结构的数据库
一、redis的安装
1.1、安装步骤
1#xff09;安装Redis依赖
Redis是基于c语言编写的#xff0c;因此需要安装对应的gcc环境
yum install -y gcc tcl
2#xff09;进入/usr/local/src/目录上传并解压安装包
解压#xf…
Redis 是一个基于内存的key-value结构的数据库
一、redis的安装
1.1、安装步骤
1安装Redis依赖
Redis是基于c语言编写的因此需要安装对应的gcc环境
yum install -y gcc tcl
2进入/usr/local/src/目录上传并解压安装包
解压
tar -zxvf 安装包名
3解压成功后进入解压的文件目录
运行编译指令
make make install
注意如果没有报错表示安装成功默认安装路径为/user/lcoal/bin目录下
1.2、启动方式
1前台启动
前台启动会阻塞整个窗口窗口关闭或者停止Redis也会停止
redis-server
2后台启动
修改Redis的配置文件配置文件就在解压的安装包下名称为redis.conf修改配置文件一般先进行备份
# 将守护进程修改为yes就可以在后台运行
daemonize yes
修改成功后启动redis时只需要在命令后面加上配置文件名
redis-server redis.con1.3、开机自启
通过配置设置开机自启创建一个系统服务文件
1创建系统服务文件
vi /etc/systemd/system/redis.service
2设置文件内容为
[Unit]
Descriptionredis-server
Afternetwork.target
[Service]
Typeforking
# 这行配置内容要根据redis的安装目录自定义路径
ExecStart/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmptrue
[Install]
WantedBymulti-user.target
3重载系统服务
systemctl daemon-reload
之后就可以使用systemctl命令操作redis
1.4、Redis其他配置
# 设置访问Redis的访问密码
requirepass 密码
# 监听端口
port 6379
# 设置允许访问的地址默认是127.0.0.1会导致只能在本地访问设置为0.0.0.0就可以在任何IP下访问
bind 0.0.0.0
# 数据库数量设置为1代表只使用一个数据库默认有16个库
databases 1
# 设置redis最大使用的内存
maxmemory 512mb
# 日志文件默认为空不记录日志可以指定日子文件名
logfile 文件名
1.4、使用Docker安装
普通安装redis后redis默认只能够本地连接127.0.0.1不能进行远程访问
常规步骤 安装redis镜像拉取官方的最新版本的镜像 docker pull redis:latest 查看redis镜像查看是否已安装了 redis docker images 运行容器 docker run -itd --name myRedis -p 6379:6379 redis 查看容器安装成功 docker ps
支持远程访问 安装redis镜像拉取官方的最新版本的镜像 docker pull redis:latest 新建data和conf两个文件夹位置随意 mkdir -p /root/docker/redis/data
mkdir -p /root/docker/redis/conf 增加配置文件 redis.conf 在刚才新建的redis/conf中新建文件redis.conf内容如下 #bind 127.0.0.1 //允许远程连接
protected-mode no
appendonly yes //持久化
requirepass 123456 //密码
注意
1、以上文件redis.conf内容行与行之间不能带有空格否则新建容器后容器状态为stopped无法启动
2、如果配置了redis密码在配置时除了需要redis的ip端口号外也需要配置redis密码 创建redis容器并启动: docker run --name myRedis -p 6379:6379 -v /root/docker/redis/data:/data -v /root/docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf 启动成功查看状态 docker ps
二、常用指令
2.1、常用数据类型
Redis存储的是key-value结构的数据其中key是字符串类型value有五种常用到的数据类型 String —— 字符串类型最常用 Hash —— 字典类型最常用 List —— 列表类型 Set —— 集合类型 ZSet —— 有序集合类型
2.2、字符串常用命令
字符串类型string普通字符串Redis中最简单的数据类型
指令说明set key value设置指定key的值get key获取指定key的值setex key seconds value设置置顶key的值并将key的过期时间设置为seconds秒setnx key value只有在key不存在时设置value的值
e g:
// 设置指定key所对应值
set name lihua
// 获取指定key的值
get name
// 设置指定key的有效时间为20秒
setex age 20 zhang
// 当设置的key不存在时才会设置对应的值存在时不设置
setnx score 98 // 不存在时返回1存在时返回0
2.3、哈希常用命令
哈希hash也叫散列类似于java中的HashMap结构hash特别适合存储对象
指令说明hset key field value将哈希表中的字段field的值设置为valuehget key field获取存储在哈希表中指定字段的值hdel key field删除存储在哈希表中指定字段的值hkeys key获取哈希表中的所有字段hvals key获取哈希表中所有值
e g:
// 设置ID属性为2的人的name属性为zhang
hset 2 name zhang
// 获取ID属性为2的问的name属性的值
hget 2 name
// 删除id属性为2的人的name属性的值
hdel 2 name
// 获取ID属性为2的人的所有字段
hkeys 2
// 获取ID属性为2的人的所有字段值
hvals 2
2.4、列表常用命令
列表list按照插入顺序排序可以有重复元素类似java中的linkelist
指令说明lpush key value1 [value2]将一个或多个值插入到列表的头部lrange key start stop获取列表指定范围内的元素rpop key移除并获取列表最后一个元素llen key获取类表的长度
eg
// 向对应key中插如两个值
lpush mylist 23 43
// 获取对应key的指定范围内的元素头部到尾部使用0 -1表示
lrange mylist 0 -1
// 删除并获取列表中的最后一个
rpop mylist
// 获取指定列表的长度
llen mylist
2.5、集合常用命令
集合set无序集合没有重复元素类似于java中的HashSet
指令说明sadd key member1 [member2]向集合中添加一个或多个成员smembers key返回集合中的所有成员scard key获取集合的成员数sinter key1 [key2]返回所有指定集合的交集sunion key1 [key2]返回所有集合的并集srem key member1 [member2]删除集合中一个或多个成员
e g:
// 向集合中添加两个成员
sadd myset 223 344
// 返回集合中的所有元素
smembers myset
// 获取集合的成员数
scard myset
// 返回两个集合的交集
sinter myset1 myset2
// 返回两个集合的并集
sunion myset2 myset2
// 删除集合中的元素
srem myset 223
2.6、有序集合常用命令
有序集合sorted set zset集合中每个元素关联一个double类型的分数根据分数生序排序没有重复元素
指令说明zadd key score1 member1 [score2 member2]向有序集合中体添加一个或多个成员zrange key start stop [withscores]通过索引区间返回有序集合中的指定区间的元素zincrby key increament member有序集合中对指定成员的分数加上增量increamentzrem key member [member]移除有序集合中的一个或者多个元素
eg
// 向有序集合中添加一个成员并指定a的score值为10.0
zadd zset 10.0 a
// 查看有序集合中的所有成员的元素
zrange zset 0 -1
// 查看有序集合中的所有成员的元素和分数
zrange zset 0 -1 withscore
// 对有序成员中的a元素的分数值加5
zincrby zset 5.0 a
// 删除有序集合中的指定元素
zrem zset b
2.7、通用命令
Redis的通用命令就是部分数据类型的都可以使用的命令
命令说明keys pattem查找所有符合给定模式pattem的keyexists key检查给定的key是否存在type key返回key所存储的数据类型del key1 [key2]删除指定存在的key
eg
// 返回所有的key
keys *// 返回以set开头的所有key
keys set*
// 检查具体key是否存在
exists tex
// 返回对应key存储的数据类型
type tex
// 删除key
del tex
三、在java程序中操作redis
在java程序中一般使用Spring Data Redis操作redis数据库
3.1、redis的java客户端
Redis的java客户端有很多常用的有几种 Jedis Lettuce Spring Data Redis
Spring Data Redis是Spring的一部分对Redis底层开发包进行了高度封装
3.2、Spring Data Redis的使用方法
操作步骤 导入Spring Data Redis的maven坐标
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependency 配置Redis数据源 redis:host: IP地址port: 端口号password: 密码database: 10 # 表示使用10号数据库redis默认创建16个数据库 编写配置类创建RedisTemplate对象
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/*** Redis配置类*/
Configuration
Slf4j
public class RedisConfiguration {
Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info(开始创建Redis模版对象···);RedisTemplate redisTemplate new RedisTemplate();// 设置redis的链接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);// 设置redis key的序列化对象redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
} 通过RedisTemplate对象中的opsFor***来获取具体对象操作Redis这里列举个别
/*** Redis测试类*/
SpringBootTest
public class RedisTemplateText {Autowiredprivate RedisTemplate redisTemplate;Testpublic void textRedisType(){/*** 操作字符串类类型数据*/// 添加字符串类型数据-并设置有效时间redisTemplate.opsForValue().set(name,zhangshanc,20, TimeUnit.MILLISECONDS);// 对应key不存在时设置对应的key的值--对应redis中的setnx指令redisTemplate.opsForValue().setIfAbsent(age,12);
/*** 操作哈希类型数据--其他指令见名知意*/// 添加hash类型的数据使用put--对应redis中的指令为hsetredisTemplate.opsForHash().put(11,name,tom);}
}
注意redis中通用类型的数据直接使用RedisTemplate对象直接操作