首页 > 数据库 >Redis基础命令

Redis基础命令

时间:2024-07-28 18:24:30浏览次数:14  
标签:Redis redis 命令 jedis user 基础 new 序列化 redisTemplate

目录

介绍

特征

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);
    }

标签:Redis,redis,命令,jedis,user,基础,new,序列化,redisTemplate
From: https://blog.csdn.net/ppp666777/article/details/140749424

相关文章

  • Java基础12:JavaDoc生成文档
    1.简介JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了。在简略介绍JavaDoc写法之后,再看一下在IntellijIdea中如何将代码中的注释生成HTML文档。JavaDoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代......
  • Java基础11:包机制
    包机制1.问题发现存在这样一个问题:当定义了多个类的时候,可能会发生类名的重复问题。解决方式:在java中采用包机制处理开发者定义的类名冲突问题。就好比我们平时的用电脑,一个文件夹下不能存在同名的文件,我们要是有这样的需求,但是又不想换名字,我们就可以考虑使用新建一个文件......
  • Java基础10:拓展运算符、字符串连接符、三元运算符
    扩展运算符publicstaticvoidmain(String[]args){ inta=10; intb=20; a+=b;//a=a+b System.out.println(a+":"+b);}字符串连接符"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。//字符串......
  • Java基础09:逻辑运算符、位运算符
    逻辑运算符逻辑与:&&和&,逻辑或:||和|,逻辑非:!。publicstaticvoidmain(String[]args){ booleana=true; booleanb=false; System.out.println("a&&b="+(a&&b));//false System.out.println("a||b="+(a||b));......
  • Java基础07:基本运算符
    运算符运算符operatorJava语言支持如下运算符:算术运算符:+,-,*,/,%,++,--赋值运算符=关系运算符:>,<,>=,<=,==,!=instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>(了解!!!)条件运算符?:扩展赋值运算符:+=,-=,*=,/=二元运算符publicstaticvoidmain(Str......
  • Java基础08:自增自减运算符,初识Math类
    一元运算符自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数,分为前缀和后缀两种。publicstaticvoidmain(String[]args){ inta=3; intb=a++;//执行完后,b=3。先给b赋值,再自增。 intc=++a;//执......
  • Ansible常用命令
    ansible-playbook#ansible-playbookplaybook.yml#基本执行#ansible-playbookplaybook.yml--check#模拟执行Playbook,显示将要发生的变化,但不实际执行#ansible-playbookplaybook.yml-......
  • 九.预处理命令
            我们一般编辑程序的顺序为:编辑,预处理,编译,连接,运行。中间三个其实都是在我们gcc时系统会完成的操作。        预处理包含:宏定义,文件包含,条件编译一,宏定义        在上一篇我们也提及到了一部分预处理的内容,其实预处理的本质就是无脑的文本替......
  • ES基础使用与理解
    各语言对接ES,可由客户端client调用内置的API方法,然后转换为JSON格式的DSL语句进行交互,通过http请求调用ES提供的restful风格的API接口。客户端库的工作流程:API调用:开发者使用客户端库提供的高级API方法,比如client.index()或者client.search()。转换为RESTful请求:客户端......
  • Animate软件基础:可补间对象和属性
    在Animate软件中,补间动画是最常用的一个功能,而可以使用补间过渡的属性和对象也是有要求的。FlashASer:Animate2022零基础应用教程之教师篇https://zhuanlan.zhihu.com/p/555447498FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.com/p/677437436FlashASer:实用的各......