Redis-02Redis在linux下的安装及常见问题

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis-02Redis在linux下的安装及常见问题

新建redis用户

使用root用户登录虚机,添加用户并设置密码

#添加用户  [也可以通过-u -g -d参数指定特定的值来创建用户
[root@artisan ~]# useradd redis 
#修改密码
[root@artisan ~]# passwd redis
Changing password for user redis.
New password: 
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfull
#查看
[redis@artisan ~]$ id redis
uid=501(redis) gid=501(redis) groups=501(redis)


安装Redis

切换到redis用户,创建目录,下载解压。我这台主机可以连外网,所以直接通过wget的方式下载,如果不能访问外网的话,可以下载后ftp到主机上。

[root@artisan ~]# su - redis
[redis@artisan ~]$ mkdir -p /home/redis/redis
[redis@artisan ~]$wget http://download.redis.io/releases/redis-4.0.11.tar.gz
[redis@artisan ~]$tar -xvzf redis-4.0.11.tar.gz
[redis@artisan ~]$cd redis-4.0.11
[redis@artisan ~]$make


make 错误一 未安装gcc

[redis@artisan redis-4.0.11]$ make
cd src && make all
make[1]: Entering directory `/home/redis/redis/redis-4.0.11/src'
    CC Makefile.dep
make[1]: Leaving directory `/home/redis/redis/redis-4.0.11/src'
make[1]: Entering directory `/home/redis/redis/redis-4.0.11/src'
    CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/home/redis/redis/redis-4.0.11/src'
make: *** [all] Error 2
[redis@artisan redis-4.0.11]$ 



参考 https://stackoverflow.com/questions/30692708/redis-linux-error-when-installing-redis-on-linux-cc-command-not-found



20180919113921758.png


然后重新make


make 错误二 jemalloc

[redis@artisan redis-4.0.11]$ make
cd src && make all
make[1]: Entering directory `/home/redis/redis/redis-4.0.11/src'
    CC adlist.o
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/home/redis/redis/redis-4.0.11/src'
make: *** [all] Error 2


参考 https://unix.stackexchange.com/questions/94479/jemalloc-and-other-errors-making-redis-on-centos-6-4


20180919114117582.png


执行上述命令后

[redis@artisan redis-4.0.11]$ make distclean  
......
......
......
[redis@artisan redis-4.0.11]$ make
......
......
......
Hint: It's a good idea to run 'make test' ;)
make[1]: Leaving directory `/home/redis/redis/redis-4.0.11/src'
[redis@artisan redis-4.0.11]$ 


整理文件

为了方便对Redis的配置和服进行管理,建立etc和bin目录

[redis@artisan redis-4.0.11]$ pwd
/home/redis/redis/redis-4.0.11
[redis@artisan redis-4.0.11]$ mkdir etc
[redis@artisan redis-4.0.11]$ mkdir bin
[redis@artisan redis-4.0.11]$ mv redis.conf etc/
[redis@artisan redis-4.0.11]$ cd src
[redis@artisan src]$ mv mkreleasehdr.sh  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server  redis-trib.rb ../bin
[redis@artisan src]$ 


20180919120103855.png


启动redis

以默认的方式启动redis

可以直接使用./redis-server的方式 以默认形式启动redis.

[redis@artisan bin]$ ./redis-server 
31494:C 19 Sep 20:01:36.670 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
31494:C 19 Sep 20:01:36.670 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=31494, just started
31494:C 19 Sep 20:01:36.670 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
31494:M 19 Sep 20:01:36.671 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
31494:M 19 Sep 20:01:36.671 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
31494:M 19 Sep 20:01:36.671 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 4.0.11 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 31494
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               
31494:M 19 Sep 20:01:36.693 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
31494:M 19 Sep 20:01:36.693 # Server initialized
31494:M 19 Sep 20:01:36.693 # 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.
31494:M 19 Sep 20:01:36.694 # 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.
31494:M 19 Sep 20:01:36.694 * Ready to accept connections


ctrl+c终止该进程

^C31494:signal-handler (1537361978) Received SIGINT scheduling shutdown...
31494:M 19 Sep 20:59:38.814 # User requested shutdown...
31494:M 19 Sep 20:59:38.816 * Saving the final RDB snapshot before exiting.
31494:M 19 Sep 20:59:38.828 * DB saved on disk
31494:M 19 Sep 20:59:38.828 # Redis is now ready to exit, bye bye...


查看进程,可以看到没有该进程了。

[redis@artisan bin]$ ps -ef|grep redis-server |grep -v redis-server
[redis@artisan bin]$


指定redis.conf启动redis

[redis@artisan bin]$ ./redis-server ../etc/redis.conf 
31765:C 19 Sep 21:04:08.458 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
31765:C 19 Sep 21:04:08.458 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=31765, just started
31765:C 19 Sep 21:04:08.458 # Configuration loaded
31765:M 19 Sep 21:04:08.460 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
31765:M 19 Sep 21:04:08.460 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
31765:M 19 Sep 21:04:08.460 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 4.0.11 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 31765
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               
31765:M 19 Sep 21:04:08.464 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
31765:M 19 Sep 21:04:08.464 # Server initialized
31765:M 19 Sep 21:04:08.464 # 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.
31765:M 19 Sep 21:04:08.464 # 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.
31765:M 19 Sep 21:04:08.464 * DB loaded from disk: 0.000 seconds
31765:M 19 Sep 21:04:08.464 * Ready to accept connections


后台方式启动redis

修改redis.conf 将 daemonize no 修改为 daemonize yes,保存重启redis.


20180919131242924.png

[redis@artisan redis-4.0.11]$ cd bin/
[redis@artisan bin]$ ./redis-server  ../etc/redis.conf 
31864:C 19 Sep 21:11:01.500 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
31864:C 19 Sep 21:11:01.500 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=31864, just started
31864:C 19 Sep 21:11:01.500 # Configuration loaded
[redis@artisan bin]$ 
[redis@artisan bin]$ ps -ef|grep redis-server 
redis     31865      1  0 21:11 ?        00:00:00 ./redis-server 127.0.0.1:6379   
redis     31870  31812  0 21:11 pts/0    00:00:00 grep redis-server
[redis@artisan bin]$ date 
Wed Sep 19 21:11:14 CST 2018
[redis@artisan bin]$ 


aemonize:yes:redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。

daemonize:no当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。

后台启动方式下,启动之后打印了很少的的内容,查看是否启动成功,ps -ef|grep redis-server 命令即可。


访问redis


我这里使用了RedisDesktopManager 来连接访问redis server .

Redis版本redis-4.0.11

目前:


  1. 桥接模式,虚机的网络和宿主机(本地windows)网络一致,可ping通
  2. 虚拟机的防火墙已经关闭
  3. 虚拟机中的redis server 已经以后台方式启动,通过虚拟机上的redis-cli可操作

但是仍然访问不了 。


解决方法一 关闭保护模式


Step1: redis.conf 将 bind 127.0.0.1 注释掉 https://bingozb.github.io/62.html

Step2: redis.conf 关闭保护模式 (protected-mode no 3.2 之后加入的新特性)

Step3: 重启redis

Step4: 使用本地的RedisDesktopManager,可以正常访问。

经过验证,有效。


解决方法二 设置密码


Step1: redis.conf 将 bind 127.0.0.1 注释掉 https://bingozb.github.io/62.html


Step2: redis.conf 保持默认的保护模式开启状态,无需修改,使用修改配置文件或者命令行的方式来设置密

  • 修改配置文件 redis.conf ,需要重启redis
  • 命令行,无需重启redis

命令行方式设置密码,无需重启redis (临时密码,重启后失效)

[redis@artisan bin]$ ./redis-cli 
127.0.0.1:6379> config set requirepass
(error) ERR Wrong number of arguments for CONFIG set
127.0.0.1:6379> config set requirepass artisan
OK
127.0.0.1:6379> auth artisan
OK
127.0.0.1:6379> 

或者连接的使用通过 -a 指定密码连接

[redis@artisan bin]$ ./redis-cli 
127.0.0.1:6379> set name artisan
(error) NOAUTH Authentication required.
127.0.0.1:6379> exit
[redis@artisan bin]$ ./redis-cli -a artisan
Warning: Using a password with '-a' option on the command line interface may not be safe.
127.0.0.1:6379> 
127.0.0.1:6379> set name artisan
OK
127.0.0.1:6379> get name
"artisan"
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> 


#查看当前密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "artisan"


客户端测试


20180919144529432.png


修改redis.conf,需重启redis (永久设置)

Step1:在redis.conf 找到

# requirepass foobared


取消默认的注释,设置密码,比如:

requirepass artisan



建议设置一个很复杂的密码


20180919153809207.png

Step2:指定配置文件,重新启动redis

[redis@artisan bin]$ pkill redis-server 
[redis@artisan bin]$ ./redis-server ../etc/redis.conf 
32394:C 19 Sep 23:33:17.462 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
32394:C 19 Sep 23:33:17.462 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=32394, just started
32394:C 19 Sep 23:33:17.462 # Configuration loaded
[redis@artisan bin]$ ps -ef|grep redis-server
redis     32395      1  0 23:33 ?        00:00:00 ./redis-server *:6379           
redis     32400  31939  0 23:33 pts/1    00:00:00 grep redis-server
[redis@artisan bin]$ 


Java 中操作带有密码的redis


20180919154522793.png


操作之前先 清空redis

我们直接在虚机上的客户端操作下

[redis@artisan bin]$ ./redis-cli 
127.0.0.1:6379> auth artisan
OK
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> 


主要是 jedis.auth(“artisan”);

package com.artisan.redis.withjava;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JavaRedisInsertWithJedisPool {
  public static void main(String[] args) {
    // 实例化jedisPoolConfig并设置相关参数
    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    jedisPoolConfig.setMaxIdle(50);
    jedisPoolConfig.setMaxTotal(100);
    jedisPoolConfig.setMaxWaitMillis(2000);
    // 使用jedisPoolConfig初始化redis的连接池
    JedisPool jedisPool = new JedisPool(jedisPoolConfig, "192.168.31.66", 6379);
    // 从jedisPool中获取一个连接
    Jedis jedis = jedisPool.getResource();
    jedis.auth("artisan");
    int i = 0 ;
    long beginTime = System.currentTimeMillis();
    try {
      while (true) {
        long endTime = System.currentTimeMillis();
        // 超过一秒 停止操作
        if (endTime - beginTime > 1000) {
          break;
        }
        i++;
        // 写入redis
        jedis.set("artisan-" + i, String.valueOf(i));
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      // 关闭redis
      jedis.close();
    }
    System.out.println("1S内对redis的写入次数为" + i);
  }
}


20180919154844147.png


参看客户端中的数据


20180919154917135.png


127.0.0.1:6379> get artisan-999
"999"
127.0.0.1:6379> 


Spring 中操作带有密码的redis


20180919154526141.png


redis.properties

#ip地址  
redis.host.ip=192.168.31.66
#端口号  
redis.port=6379  
#如果有密码  
redis.password=artisan
#客户端超时时间单位是毫秒 默认是2000  
redis.timeout=3000  
#最大空闲数  
redis.maxIdle=6  
#连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal  
#redis.maxActive=600  
#控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性  
redis.maxTotal=20  
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。  
redis.maxWaitMillis=3000  
#连接的最小空闲时间 默认1800000毫秒(30分钟)  
redis.minEvictableIdleTimeMillis=300000  
#每次释放连接的最大数目,默认3  
redis.numTestsPerEvictionRun=4  
#逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1  
redis.timeBetweenEvictionRunsMillis=30000


applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd">
  <context:component-scan base-package="com.artisan.redis.withSpring" annotation-config="true" />
   <!--1,如果你有多个数据源需要通过<context:property-placeholder管理,且不愿意放在一个配置文件里,那么一定要加上ignore-unresolvable=“true" -->
    <context:property-placeholder location="classpath:redis/redis.properties"
        ignore-unresolvable="true" />
    <!--2,注意新版本2.3以后,JedisPoolConfig的property name,不是maxActive而是maxTotal,而且没有maxWait属性,建议看一下Jedis源码或百度。 -->
    <!-- redis连接池配置 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <!--最大空闲数 -->
        <property name="maxIdle" value="${redis.maxIdle}" />
        <!--连接池的最大数据库连接数 -->
        <property name="maxTotal" value="${redis.maxTotal}" />
        <!--最大建立连接等待时间 -->
        <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
        <!--逐出连接的最小空闲时间 默认1800000毫秒(30分钟) -->
        <property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}" />
        <!--每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3 -->
        <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}" />
        <!--逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 -->
        <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}" />
      <property name="testOnBorrow" value="true"></property>
    <property name="testOnReturn" value="true"></property>
    <property name="testWhileIdle" value="true"></property>
    </bean>
  <!--redis连接工厂 -->
    <bean id="jedisConnectionFactory"
        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
        destroy-method="destroy">
        <property name="poolConfig" ref="jedisPoolConfig"></property>
        <!--IP地址 -->
        <property name="hostName" value="${redis.host.ip}"></property>
        <!--端口号 -->
        <property name="port" value="${redis.port}"></property>
        <!--如果Redis设置有密码 -->
        <property name="password" value="${redis.password}" /> 
        <!--客户端超时时间单位是毫秒 -->
        <property name="timeout" value="${redis.timeout}"></property>
        <property name="usePool" value="true" />
        <!--<property name="database" value="0" /> -->
    </bean>
  <!-- redis template definition -->
  <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
    p:connection-factory-ref="jedisConnectionFactory">
    <!-- 序列化方式 建议key/hashKey采用StringRedisSerializer。 -->
    <property name="keySerializer">
      <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
    </property>
    <property name="hashKeySerializer">
      <bean
        class="org.springframework.data.redis.serializer.StringRedisSerializer" />
    </property>
    <property name="valueSerializer">
      <bean
        class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
    </property>
    <property name="hashValueSerializer">
      <bean
        class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
    </property>
  </bean>
  <!-- 对string操作的封装
  <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"
    p:connection-factory-ref="jedisConnectionFactory" />
     -->
  <!-- <bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager" 
    c:template-ref="redisTemplate"/> -->
</beans>


SpringRedisInsert.java

package com.artisan.redis.withSpring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.core.RedisOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SessionCallback;
public class SpringRedisInsert {
  public static void main(String[] args) {
    ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    RedisTemplate<String, Object> redisTemplate = (RedisTemplate) ctx.getBean("redisTemplate");
    Artisan artisan = new Artisan();
    artisan.setId(1L);
    artisan.setName("小工匠");
    artisan.setComments("使用Spring提供的RedisTemplate操作redis");
    // set
    redisTemplate.opsForValue().set("spring_redis_artisan", artisan);
    // get
    Artisan artisan1 = (Artisan) redisTemplate.opsForValue().get("spring_redis_artisan");
    System.out.println(artisan1.getId());
    System.out.println(artisan1.getName());
    System.out.println(artisan1.getComments());
    // 上面的set 和 get 方法看起来很简单 , 它可 能就来自于 同 一个 Red is 连接池的不同 Redis 的连接。
    // 为了使得所有的操作都来自于同一个连接 , 可 以使用 SessionCallback 或者 RedisCallback 这
    // 两个接口,而 RedisCallback 是 比较底层的封装 , 其使用不是很友好,所以更多 的时候会使
    // 用 SessionCallback 这个接口 , 通过这个接口就可以把多个命令放入到同一个 Redis 连接 中去执行
    Artisan artisan2 = new Artisan();
    artisan2.setId(2L);
    artisan2.setName("小工匠2");
    artisan2.setComments("2-使用Spring提供的RedisTemplate操作redis");
    SessionCallback<Artisan> sessionCallback = new SessionCallback<Artisan>() {
      @Override
      public Artisan execute(RedisOperations ops) throws DataAccessException {
        ops.boundValueOps("artisan_from_same_conn").set(artisan2);
        return (Artisan) ops.boundValueOps("artisan_from_same_conn").get();
      }
    };
    Artisan savedArtisan = redisTemplate.execute(sessionCallback);
    System.out.println(savedArtisan.getId());
    System.out.println(savedArtisan.getName());
    System.out.println(savedArtisan.getComments());
  }
}


清空redis先,确保数据干净

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)


执行SpringRedisInsert#main()

没配置日志组件,忽略红色的warn


20180919155639373.png


再次查看

127.0.0.1:6379> keys *
1) "artisan_from_same_conn"
2) "spring_redis_artisan"
127.0.0.1:6379> get artisan_from_same_conn
"\xac\xed\x00\x05sr\x00$com.artisan.redis.withSpring.ArtisanmS\xb5\x92\xcc\xbfS\xb1\x02\x00\x03J\x00\x02idL\x00\bcommentst\x00\x12Ljava/lang/String;L\x00\x04nameq\x00~\x00\x01xp\x00\x00\x00\x00\x00\x00\x00\x02t\x00/2-\xe4\xbd\xbf\xe7\x94\xa8Spring\xe6\x8f\x90\xe4\xbe\x9b\xe7\x9a\x84RedisTemplate\xe6\x93\x8d\xe4\xbd\x9credist\x00\n\xe5\xb0\x8f\xe5\xb7\xa5\xe5\x8c\xa02"
127.0.0.1:6379> get spring_redis_artisan
"\xac\xed\x00\x05sr\x00$com.artisan.redis.withSpring.ArtisanmS\xb5\x92\xcc\xbfS\xb1\x02\x00\x03J\x00\x02idL\x00\bcommentst\x00\x12Ljava/lang/String;L\x00\x04nameq\x00~\x00\x01xp\x00\x00\x00\x00\x00\x00\x00\x01t\x00-\xe4\xbd\xbf\xe7\x94\xa8Spring\xe6\x8f\x90\xe4\xbe\x9b\xe7\x9a\x84RedisTemplate\xe6\x93\x8d\xe4\xbd\x9credist\x00\t\xe5\xb0\x8f\xe5\xb7\xa5\xe5\x8c\xa0"
127.0.0.1:6379>


好了,到这里就先结束吧。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6天前
|
Linux Python
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
|
8天前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
61 24
|
8天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
76 20
|
2天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
52 7
|
9天前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
26 2
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
64 4
|
1月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
54 5
|
1月前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
190 0
|
1月前
|
NoSQL 编译器 Linux
【赵渝强老师】Redis的安装与访问
本文基于Redis 6.2版本,详细介绍了在CentOS 7 64位虚拟机环境中部署Redis的步骤。内容包括安装GCC编译器、创建安装目录、解压安装包、编译安装、配置文件修改、启动服务及验证等操作。视频讲解和相关图片帮助理解每一步骤。
|
1月前
|
关系型数据库 MySQL Linux
Linux-安装Mariadb
本文介绍了在 Alibaba Cloud Linux 系统上安装和配置 MariaDB 10.5 的步骤。包括下载安装、初始化数据库、启动服务、处理启动失败的常见问题(如权限问题),以及如何连接数据库、设置密码和允许外部连接。通过这些步骤,您可以顺利完成 MariaDB 的安装和基本配置。
67 0