Redis基础

Redis基础

redis 安装:
1.到网上下载自己电脑对应的redis包,解压到某个文件夹:如图:
2.开启redis 服务:打开cmd ,切换到解压的目录下 输入运行:redis-server.exe redis.conf
3.开启redis 客户端:第二个操作的cmd窗口不能关闭,保证服务端开启,再开启一个cmd 窗口,切换到解压目录下,输入运行:redis-cli.exe -h 127.0.0.1 -p 6379
至此,redis安装开启完毕可以进行操作。

redis基础数据类型:

redis 存储数据为key-value的形式。

基础数据类型有:字符串(String)、哈希(Hash)、列表(List )、集合(set)、有序集合(sorted set)。
下述说明一些常用的操作命令: 在客户端cmd窗口输入命令

字符串(String)的基本操作:
set name “ccl”           //该操作像redis数据库存入key为name   value为ccl 的这样一个键值对。
get name                      //获取key 为name 所对应的value
getrange name 0 1      // 获取key为name的字符串索引0-1的子串

getset name "xadj"       //设置key的值并返回现在的值
mget  name  age            //获取name   和age 的值
setex name 10  "aaa"     //设置name 的值为aaa    并设置name的有效性为10秒,十秒之后再get name 就得到name为空
setnx name ccl                //当name为空的时候设置值为ccl 如果有值就不存储
append name ccl            //在name的值串后面加上ccl

哈希(hash)的基本操作:
hmset  myhash filed1  "ccl" filed2 "222"    //创建一个hash  里面创建两个字段并赋值
hget myhash filed1                                     //获取myhash 中字段为filed1的值
hgetall myhash                                            //获取myhash 中所以得字段和对应的值
hdel myhash filed1                                        //删除myhash中的字段filed1
hexists myhash filed1                                    //判断myhash中是否存在字段filed1
hkeys myhash                                                   //获取myhash 所有的key
hlen myhash                                                     //获取myhash中的字段数量
hsetnx myhash filed3 "aa"                                //当字段filed3不存在的时候才给他赋值,存在就不赋值
hvals myhash                                                   //获取myhash所有的值

列表(List)的基本操作:

lpush mylist aaa                                    //往mylist列表中添加一个值aaa

blpop mylist 5                                        //移除mylist中的第一个值,设置超时时间为5秒,如果没有值等待五秒之后返回,五秒之内有值就返回
brpop mylist 5                                   //移除mylist中的第一个值,设置超时时间为5秒,如果没有值等待五秒之后返回,五秒之内有值就返回
lindex mylist 1                                        //获取索引为1的值
llen mylist                                                //获取mylist长度
lpop mylist                                                //移除并获取mylist第一个值
lrange mylist 0 10                                       //获取mylist中索引为0-10的值
lrem mylist count ccl                                    //移除列表中某个元素
lset mylist  1 ccl                                            //通过索引设置mylist的值
rpop mylist                                                   //移除mylist中最后一个值

集合(set)的基本操作 
sadd myset ccl                                            //往集合中添加元素
smembers myset                                        //获取集合所有的元素
scard myset                                                //获取集合元素个数 
sdiff myset myset1                                      //获取两个几个的差集
sinter myset myset1                                    //获取两个集合交集
sismember myset ccl                                    //判断ccl是都是myset中的元素
srandmember myset                                    //随机返回集合中的一个元素
srem myset ccl                                            //从myset 中移除ccl
sunion myset myset1                                   //获取myset 和myset1的并集

有序集合的基本操作:
zadd mysorted 1 ccl                                   //往mysorted 中添加ccl 并关联一个数字1 有序集合根据这个数值排序
zcard mysorted                                           //获取mysorted 中的集合个数
zrank mysorted qqq                                   // 获取元素在集合中的索引
zrange  mysorted 0 10 withscores            //获取索引-0-10的值
zscore mysorted dd                                    //获取dd关联的数字


HyperLogLog 基数统计 
例如集合{1,3,4,5,6,7,1,2} 基数集为{ 1,3,4,5,6,7,2} 为7,会有个误差,但是这个误差在可接受的范围


redis 发布订阅
发布订阅是一种消息通信机制:发布者,订阅者。订阅者先订阅某个频道,就会进入消息等待,发布者往频道发布消息之后,订阅者马上可以获得发布者的消息。
接着开启三个客户端加上之前那个四个客户端,三个客户端订阅频道。一个客户端发布消息
subscribe redischat    //订阅频道为redischat
publish redischat chatmessage11111  //往redischat频道发送消息。
一个发布者发布消息之后,三个订阅者都可以一起接收到消息

Redid事务

redis事务与关系型数据库中的事务不同,没有原子操作性,可以理解为多个命令打包批量执行,中间某个命令出错,不会导致前面的命令回滚,也不会导致后面的命令不执行 。
multi     //标记一个事务块的开始 
exec     //执行事务块
discard   //取消事务块

redis 数据备份和恢复:
备份:执行命令:save 或者bgsave   (保存或者后台保存),在redis的目录下就会生成 dump.rdb文件,就是数据库的备份文件。
恢复:将保存的dump.rdb文件放到redis目录下,重启redis服务端就能恢复。
ps:执行名命令:config get dir  就能输出redis的目录 。
 

redis 安全
运行命令:config get requirepass  可以查看当前redis是否有密码
加密:config   set requirepass redis    给当前的数据库加密为redis,在运行上面的命令就可以查看密码

加密之后客户端就要验证密码才能操作。。如果不验证密码的话操作   就会没有权限

客户端验证密码的方式有两种:

1.直接运行auth redis    就可以
2.退出客户端,连接的时候直接验证密码:redis-cli.exe -h 127.0.0.1 -p 6379  -a redis
启动客户端的时候直接验证密码

java操作redis 

首先先下载jar包:

code:

package com.ccl.test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class RedisTest {
	private static Jedis jedis=new Jedis("127.0.0.1",6379);
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//jedis.auth("redis");
		//测试服务是否开启正常
		System.out.println("server is running:"+jedis.ping());
		operateSortSet();
		 
	}
	//操作有序集合
	public static void operateSortSet(){
		jedis.zadd("javasortset", 0, "javaee");
		jedis.zadd("javasortset", 2, "javase");
		jedis.zadd("javasortset", 1, "javame");
		//获取有序集合中的值
		System.out.println("javasortset有序集合中的值:"+jedis.zrange("javasortset", 0, 10));
		
	}
	//操作set 
	public static void operateSet(){
		jedis.sadd("javaset","javaee");
		jedis.sadd("javaset","javase");
		jedis.sadd("javaset","javame");
		//获取javaset中的值
		System.out.println("javaset中的值:"+jedis.smembers("javaset"));
		System.out.println("javaset中是否存在javaee:"+jedis.sismember("javaset", "javaee") );
		System.out.println("javaset中随机产生一个数:"+jedis.srandmember("javaset"));  
	    System.out.println("javaset的个数:"+jedis.scard("javaset"));//返回集合的元素个数 
		
	}
	//操作list
	public static void operateList(){
		//先删除list中的元素
		jedis.del("javalist");
		//往javalist添加值
		jedis.lpush("javalist", "javaee");
		jedis.lpush("javalist", "javase");
		jedis.lpush("javalist", "javame");
		//输出javalist前十个值
		System.out.println("javalist中的值有:"+jedis.lrange("javalist", 0, 10));
		//根据下标查找元素
		System.out.println("javalist中下标为1的值为:"+jedis.lindex("javalist", 1));
		//获取list长度 
		System.out.println("javalist的长度为:"+jedis.llen("javalist"));
		
	}
	//操作map
	public static void operateMap(){
		Map<String, String> map=new HashMap<String, String>();
		map.put("name","ccl");
		map.put("age", "23");
		//存入map
		jedis.hmset("user1", map);
		//获取user1 的两个字段值
		List<String> resultUser=jedis.hmget("user1","name","age");
		System.out.println("获取user1的值为:"+resultUser);
		//删除user1的age
		jedis.hdel("user1", "age");
		resultUser=jedis.hmget("user1","name","age");
		System.out.println("获取user1的值为:"+resultUser);
		//获取user1 的长度
		System.out.println("user1的字段个数:"+jedis.hlen("user1"));
		System.out.println("redis中是否存在user1:"+jedis.exists("user1"));
		System.out.println("user1中所有的key:"+jedis.hkeys("user1"));
		System.out.println("user1中所有的value:"+jedis.hvals("user1"));
		
	}
	
	
	
	//操作字符串
	public static void  operateString(){
		//存入key的字符串
		jedis.set("token", "javatest"); 
		String token=jedis.get("token");
		System.out.println("redis数据库中key为token的值为"+token);
		//删除键值对
		jedis.del("token");
		token=jedis.get("token");
		System.out.println("redis数据库中key为token的值为"+token);
		//设置多个键值对
		jedis.mset("name","ccl","age","23");
		//获取age值
		String  age=jedis.get("age");
		System.out.println("redis数据库中key为age的值为"+age);
		jedis.incr("age");
		age=jedis.get("age");
		System.out.println("redis数据库中key为age+1的值为"+age);
		//添加键值对对设置过期时间 
		jedis.setex("id", 20, "1000");
		
		
		
	}

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值