Docker容器安装Redis

Linux下安装Docker

搜索Redis镜像

docker search redis

在这里插入图片描述
拉取最新版本的redis镜像(不带版本,则是拉取最新版本的)

docker pull redis

准备redis.conf文件
创建目录:data/redis

mkdir -p /data/redis

在这里插入图片描述
创建redis.conf文件

touch redis.conf

编辑redis.conf

vim /data/redis/redis.conf

在文件中写入

#允许外网访问
bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456

创建Redis容器

docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

命令说明:

  • -p 6379:6379 : 将容器的6379端口映射到主机的6379端口
  • –name redis : 容器名字
  • -v /data/redis/redis.conf:/etc/redis/redis.conf : 将主机中配置文件挂载到容器中
  • -v /data/redis/data:/data : 将主机中data挂载到容器的/data
  • redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
  • redis-server /etc/redis/redis.conf : 容器中以配置文件方式启动redis

在这里插入图片描述
连接测试:在这里插入图片描述


Redis

  1. 下载redis:
    wget http://download.redis.io/releases/redis-5.0.5.tar.gz

  2. 安装gcc环境:(centos6.5自带)

  3. 解压到当前文件夹:tar -xvf redis-5.0.5.tar.gz

  4. 执行make命令

  5. 执行命令:make install PREFIX=/usr/local/redis

  6. 启动redis:
    方式1:前端启动:执行redis-server
    方式2:后端启动:

     1. 将解压redis配置文件移动到安装目录下 :mv redis.conf   /usr/local/redis/bin
     2. 编辑配置文件redis.conf:
     	将daemonize的值修改为yes
     	将bind  127.0.0.1注释
     	将protected-mode改为no
     3. 执行命令启动redis:./redis-server redis.conf
     4. 关闭redis:./redis.cli shutdown
    
  7. 连接redis服务:

    1. redis自带的客户端:执行命令:./redis-cli -h 127.0.0.1 -p 6379 //-h表示服务器ip,-p表示连接端口号
    2. redis desktop manager连接redis

Redis数据类型

  1. redis默认有0-15个数据库,切换数据库: select 0-15

  2. redis存储String数据:

    //存储一个键值
    	set username xdd	//set Key value
    	get username
    //一次存储多个键值
    	mset name xdd password 123
    	mget name password
    //取值并赋值
    	getset  username sl
    //删除
    	del username
    //数值递增
    	incr age		//age值+1
    	incrby age 2	//age值+2
    //数值递减
    	decr age		//数值-1
    	decrby age 2	//数值-2
    //字符串追加
    	append name sl	
    //获取字符串长度
    	strlen name
    
  3. redis存储Hash数据:

    hset user username xdd 	//一次设置一个字段
    hget user username  	//一次获取一个字段
    hmset user gender male age 1 //一次设置多个字段
    hmget user gender  age  //一次获取多个字段
    hsetnx user age 1		//如果字段age不存在则插入,否则不执行
    hgetall user			//获取所有的字段值
    hdel user password		//删除字段
    hincrby user age 1		//age字段值+1
    hexists user age		//判断是否存在age字段
    hkeys/hvals user		//获取所有的key或者value
    hlen user				//总共有多少个字段	
    
  4. redis存储list数据

    lpush list:1 1 2 3		//向左边添加数据
    rpush list:1 0			//向列表右边增添数据
    lrange list:1 0 4		//查看列表索引0~4的数据,索引-1表示到末尾
    lpop list:1		//从列表左面弹出一个数据
    rpop list:1		//从列表右面弹出一个数据 
    llen list:1		//获取列表的元素个数
    lrem list:1 count num		//count>0时从左面删除第一个num,count<0时从右面删除第一个num,count=0时删除所有num
    lindex list:1 2			//获取指定索引的value
    lset list:1 2 100		//设置指定索引的value
    ltrim list:1 3 5		//只保留索引为3~5的元素
    linsert key BEFORE|AFTER pivot value	// 向指定的pivot前或者后插入数据
    rpoplpush list:1 list:2		//将列表list:1的最后一个数据转移到list:2中
    
  5. redis存储set数据

     sadd set1 a b c		//增加元素
     
     srem set1 a b			//删除元素
     
     smembers set1		//获取所有的元素
     
     sismember set1 a		//判断元素是否在集合中
     
     sdiff set1 set2		//计算两个集合的差集
     
     sinter set1 set2		//两个集合的交集∩
     
     sunion set1 set2		//两个集合的并集∪
     
     scard set1		//获取集合的元素个数
     
     spop set1 2			//从集合中随机弹出2个元素
    
  6. redis存储sortedset数据(zset)

    zadd english:scoreboard 80 zhangsan 90 lisi		//添加元素
    
    zscore english:scoreboard zhangsan		//获取元素的数值
    
    zrem english:scoreboard zhaoliu			//删除元素
    
    zrange english:scoreboard start stop withscores	//获取排名在某个范围的元素(升序)
    
    zrevrange english:scoreboard start stop	//获取排名在某个范围的元素(降序)
    
    zrangebyscore english:scoreboard 80 90		//获取指定范围分数的元素
    
    zrangebyscore english:scoreboard 80 90 limit 0 2		//分页显示	
    
    zincrby english:scoreboard 1 zhangsan		//增加否个元素的分数
    
    zcard english:scoreboard		//获取集合元素的个数
    
    zcount english:scoreboard 80 90		//获取指定范围元素的个数
    
    zremrangebyrank english:scoreboard 0 0		//按照排名范围删除元素
    
    zremrangebyscore english:scoreboard 80 90		//根据分数范围删除元素
    zrank english:socreboard zhangsan		//获取元素的排名(升序)
    zrevrank english:socreboard zhangsan		//获取元素的排名(降序)
    
  7. Keys命令

     expire name 10		//设置name的存活时间为10s
     ttl name		//查看存活时间	-1表示未设置存活时间,-2表示死亡
     keys user*		//查询以user开头的所有的key
     exists name		//判断是否存在指定的key
     rename name username		//重命名
     type username		//返回值得数据类型(String,Hash,list,set,zset)
    

redis持久化

  1. RDB持久化:通过快照完成,redis默认采用的持久化方式

     save 900 1		//每900s至少有一个键被保存到快照
     save 300 10
     save 60 10000 
    
  2. AOF持久化:操作一次,保存一次

    1. 开启AOF持久化:编辑redis.conf文件,修改appendonly为yes

jedis操作redis

  1. 使用jedis

     //连接到数据库
     Jedis jedis=new Jedis("192.168.239.132",6379);
     //选择需要操作的数据库
     jedis.select(0);
     //存储获取数据
     jedis.set("user","xdd");
     String user=jedis.get("user");
     //关闭连接
     jedis.close();
    
  2. 使用JedisPool

       JedisPool pool=new JedisPool("192.168.239.132",6379);
       Jedis jedis=pool.getResource(); 
    

主从复制

  1. 在redis目录下复制出从机:cp bin/ bin2 -r

  2. 编辑redis.conf文件:

     修改:slaveof 192.168.239.132 6379
     	   port:6380
    
  3. 启动从机redis

redis集群

  1. 搭建Ruby 环境

     yum install ruby
     yum install rubygems
    
  2. 将redis-3.0.0.gem复制到/usr/local目录下

  3. 执行命令:gem install /usr/local/redis-3.0.0.gem

  4. 将redis源码下src目录下的redis-trib.rb复制到/usr/local/redis/redis-cluster

  5. 复制出6个redis服务器在/usr/local/redis/redis-cluster,端口设计为7001~1006

  6. 修改配置文件redis.conf:将cluster-enabled yes 取消注释,并修改相应的端口号

  7. 通过批处理开启redis服务
    在redis-cluster下创建可执行文件:startall.sh

     cd 7001
     ./redis-server redis.conf
     cd ../7002
     ./redis-server redis.conf
     cd ../7003
     ./redis-server redis.conf
     cd ../7004
     ./redis-server redis.conf
     cd ../7005
     ./redis-server redis.conf
     cd ../7006
     ./redis-server redis.conf
     cd ..
    

    然后赋予执行权限:chmod 744 startall.sh
    然后执行:./startall.sh

  8. 创建集群
    执行命令:./redis-trib.rb create --replicas 1 192.168.239.133:7001 192.168.239.133:7002 192.168.239.133:7003 192.168.239.133:7004 192.168.239.133:7005 192.168.239.133:7006
    - - - -可能会报错:然后提示执行命令:redis-cli --cluster create 192.168.239.133:7001 192.168.239.133:7002 192.168.239.133:7003 192.168.239.133:7004 192.168.239.133:7005 192.168.239.133:7006 --cluster-replicas 1

  9. 连接集群

     ./redis-cli -p 7006 -c		//-c表示集群方式连接
    

    查看集群信息:cluster info
    查看节点:cluster nodes
    添加主节点:./redis-trib.rb add-node 192.168.239.133:7007 192.168.239.133:7001
    删除节点:./redis-trib.rb del-node 192.168.239.133:7006 a1304f96158dc55a39abb5a67500c593a74d8342

  10. jedis连接redis集群

    public void test3(){
    	Set<HostAndPort> nodes=new HashSet<HostAndPort>();
    	nodes.add(new HostAndPort("192.168.239.133",7001));
    	nodes.add(new HostAndPort("192.168.239.133",7002));
    	nodes.add(new HostAndPort("192.168.239.133",7003));
    	nodes.add(new HostAndPort("192.168.239.133",7004));
    	nodes.add(new HostAndPort("192.168.239.133",7005));
    	nodes.add(new HostAndPort("192.168.239.133",7006));
    	JedisCluster cluster=new JedisCluster(nodes);
    	cluster.set("test","is my test");
    	String test=cluster.get("test");
    	System.out.println(test);
    	cluster.close();
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值