Redis 使用
安装
直接下载下来解压
https://github.com/microsoftarchive/redis/releases
文件夹中的文件说明
启动Redis服务
带配置文件启动
reids-server.exe redis.windows.conf
连接到redis进行操作
cmd>{%redis%}/redis-cli -h ip地址 -p 端口号
ip 默认为本地 -p 默认6379
cmd>{%redis%}/redis-cli
Redis的使用
String操作(重要)
设置值和获取值
set key value
get key
同时设置一个或多个 key-value 对
mset
返回所有(一个或多个)给定 key 的值
mget
将 key 中储存的数字值增1(key不存在,则初始化为0,再加1)
incr key
将 key 中储存的数字值减1(key不存在,则初始化为0,再减1)
decr key
自定义自增数量和自减数目
incrBy / decrBy
key操作(重要)
获取所有key列表
keys *
删除key
del key
设置key的过期时间(xx秒后过期)
expire key second
查看key的过期时间
ttl key
清空整个redis服务器数据,所有的数据库全部清空
flushall
清除当前库,redis中默认有16个数据库,名称分别为0,1,2…15
list操作(重要)
list集合可以看成是一个左右排列的队列(列表)
将一个或多个值 value 插入到列表 key 的表头(最左边/最右边)
lpush key value / rpush key value
移除并返回列表 key 的头(最左边/最右边)元素
lpop key / rpop key
返回列表 key 中指定区间内的元素,查询所有的stop为-1即可
lrange key start stop
根据count值移除列表key中与参数 value 相等的元素 count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。count = 0 : 移除表中所有与 value 相等的值
lrem key count value
返回列表 key 中,下标为 index 的元素
lindex key index
对一个列表进行修剪
ltrim key start stop
Quene(list)
存放都是字符串,由redis组织成各种数据结构
redis怎么实现栈(FILO)和队列(FIFO)
list控制同一边进,同一边出就是栈
list控制一边进,另一边出就是队列.
set操作(重要)
set集合是一个无序的不含重复值的队列
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
sadd key member
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
srem key member
返回集合 key 中的所有成员
smembers key
hash操作(重要)
添加一个name=>value键值对到key这个hash类型
hset key name value
获取hash类型的name键对应的值
hget key name
批量添加name=>value键值对到key这个hash类型
hmset key name1 key1 name2 key2
批量获取hash类型的键对应的值
hmget key name1 name2
返回哈希表 key 中的所有键
hkeys
返回哈希表 key 中的所有值
hvals
返回哈希表 key 中,所有的键和值
hgetall
Redis 订阅 事务(了解)
设置密码
–通过配置文件操作(掌握)
-
通过命令动态调整密码
CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效 CONFIG SET requirepass 123456 //将密码设置为123456 CONFIG SET requirepass "" //清除密码 AUTH 123456 //输入密码进行认证
- 在配置文件redis.widows.conf中增加一行代码
在配置文件redis.widows.conf中增加一行代码
requirepass 123456
将密码123456设置到配置文件中,redis启动时加载该文件,即可启用密码
java代码操作Redis(重要)
jar包
springboot (连接方式 – 只需要做配置) jedis
简单操作
String host = "127.0.0.1";
int port = 6379;
int timeout = 1000;
Jedis jedis = new Jedis(host, port, timeout);
String set = jedis.set("name", "一一");
System.out.println(jedis.get("name"));
jedis.close();
连接池配置
如果创建一个对象后需要为他设置很多值,还不如先创建它配置对象并做完配置,然后再通过配置对象创建它
//1 创建jedispool配置对象
//2 做配置-四个
//3 创建jedispool
//4 通过jedispool获取连接
//5 执行操作
//6 释放连接
//7 摧毁连接池-如果是真正项目中它应该是一个受spring管理的单例
//1 创建jedispool配置对象
JedisPoolConfig config = new JedisPoolConfig();
//2 做配置-四个
config.setMaxIdle(2);
config.setMaxTotal(10);
config.setMaxWaitMillis(1*1000); //创建连接超时
config.setTestOnBorrow(true);//获取连接是测试连接是否畅通
//3 创建jedispool
//1*1000 获取连接超时时间
JedisPool pool = new JedisPool(config,"127.0.0.1",6379,1*1000,"admin");
//4 通过jedispool获取连接
Jedis resource = pool.getResource();
//5 执行操作
String s = resource.set("name", "这是一个测试");
System.out.println(resource.get("name"));
对key 操作
//查询所有的key keys *
Set<String> keys = resource.keys("*");
System.out.println(keys);
对String操作 存值和取值
String s1 = resource.set("name", "一一");
System.out.println(resource.get("name"));
清空数据库
resource.flushDB();
对list集合操作
resource.lpush("stu","{name:yiyi}","{name:erer}","{name:sasa}" );
//0, -1 表示全部
List<String> stu = resource.lrange("stu", 0, -1);
System.out.println(stu);
对set集合操作
resource.sadd("stu","{name:yiyi}","{name:erer}","{name:sasa}" );
Set<String> stu = resource.smembers("stu");
System.out.println(stu);
对hash(map)集合操作
HashMap map = new HashMap();
map.put("name","yiyi");
map.put("age","18");
map.put("sex","true");
resource.hmset("user1",map);
List<String> hmget = resource.hmget("user1", "name", "age", "sex");
System.out.println(hmget);
sort排序操作 对数字
resource.lpush("num", "2","1","6","4","8","3");
System.out.println(resource.sort("num"));
SortingParams sortingParams = new SortingParams();
sortingParams.desc();
System.out.println(resource.sort("num", sortingParams));
字母的排序 根据ASCII码 (根据首字母)
resource.lpush("area","Chengdu","Changsha","Wuhan","Guangzhou");
SortingParams sortingParams1 = new SortingParams();
sortingParams1.alpha();
System.out.println(resource.sort("area", sortingParams1));
事务操作
Transaction multi = resource.multi();
multi.set("name","yiyi");
multi.set("age","21");
multi.incr("name");
multi.incr("age");
List<Object> results = multi.exec();
System.out.println(results);
资源释放
// 6 释放连接
jedis.close(); //底层做了兼容,如果是连接池操作就是释放,如果是连接操作就是关闭
// 7 摧毁连接池-如果是真正项目中它应该是一个受spring管理的单例
pool.destroy();