Redis基础命令

目录

介绍

特征

redis安装

 redis数据结构

String类型

Hash类型 

List类型

Set类型

 SortedSet

 Java中操作redis

Jedis

SpringDataRedis

导入依赖 

编写配置文件

测试案例

自动序列化

手动序列化 

介绍

Redis全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型Nosql数据库

特征

键值型(key-value)型,value支持多种不同数据结构,功能丰富

单线程,每个命令具备原子性

低延迟,速度快(基于内存,IO对路复用,良好的编码)

支持数据持久化

支持主从集群,分片集群

支持多语言客户端

redis安装

在redis官网下载tar.gz包

修改相关配置文件

```properties
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass root
Redis的其它常见配置:

```properties
# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

通过配置实现开机自启

我们也可以通过配置来实现开机自启。

首先,新建一个系统服务文件:

```sh
vi /etc/systemd/system/redis.service
```

内容如下:

```conf
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target
```


然后重载系统服务:

```sh
systemctl daemon-reload
```



现在,我们可以用下面这组命令来操作redis了:

```sh
# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis
```



执行下面的命令,可以让redis开机自启:

```sh
systemctl enable redis
```

 redis数据结构

String类型

Hash类型 

List类型

Set类型

 SortedSet

 Java中操作redis

Jedis

1 导入maven坐标

public class JedisTest {
    private Jedis jedis;
    @BeforeEach
    void connect(){
         //创建连接对象
         //jedis = new Jedis("192.168.114.130", 6379);
        //jedis连接池
       jedis = JedisConnectFactory.getJedis();
         //设置登录密码
         jedis.auth("root");
         //选择数据库
         jedis.select(0);
    }

    @Test
    void string(){
        jedis.set("name","张三");
        jedis.get("name");
        System.out.println(jedis.get("name"));
    }

    @Test
    void hset(){
        jedis.hset("user:1","name","张三");
        jedis.hset("user:1","name","李四");
        jedis.hgetAll("user:1");
        System.out.println(jedis.hgetAll("user:1"));
    }
    @AfterEach
    void close(){
        if (jedis != null){
            jedis.close();
        }

    }
}

 jedis是线程不安全的,推荐使用jedis的连接池,

public class JedisConnectFactory {
    private static final JedisPool jedisPool;
    static {
        //配置连接池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(8);
        jedisPoolConfig.setMaxIdle(8);
        jedisPoolConfig.setMaxWaitMillis(1000);
        //创建连接池对象
        jedisPool = new JedisPool(jedisPoolConfig,
                "192.168.114.130",
                6379,1000,"root");
    }
 public static Jedis getJedis() {
        return jedisPool.getResource();
 }
}

SpringDataRedis

导入依赖 

编写配置文件

测试案例

自动序列化
@Configuration
public class RedisConfig {
        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
            //创建RedisTemplate对象
            RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>( );
            //设置连接工厂
            redisTemplate.setConnectionFactory(connectionFactory);
            //创建json序列化工具
            GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
            //设置key的序列化
            redisTemplate.setKeySerializer(RedisSerializer.string());
            redisTemplate.setHashKeySerializer(jsonRedisSerializer);
            //设置value的序列化
            redisTemplate.setValueSerializer(jsonRedisSerializer);
            redisTemplate.setHashValueSerializer(jsonRedisSerializer);
            //返回
            return redisTemplate;
        }
    }
手动序列化 

    @Test
    void testUser() throws JsonProcessingException {
        //创建对象
        User phb = new User("phb", 18);
        //手动序列化
        String json = Mapper.writeValueAsString(phb);
        //写入数据
        stringRedisTemplate.opsForValue().set("user:3",json);
        //读取数据
        String json1 = stringRedisTemplate.opsForValue().get("user:3");
        //手动反序列化
        User user = Mapper.readValue(json1,User.class);
        System.out.println(user);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值