redis笔记

不用常忘记,切记且珍惜

                                             -致redis

Redis 切换数据库 SELECT index_db_num

 

查看过期时间 TTL upload_convese_excel-null

 

redis的五种数据类型 String list hash set sortedSet

redis-cli操作redis常用命令:

Redis Keys 命令用于查找所有符合给定模式 pattern 的 key 

redis KEYS 命令基本语法如下:redis 127.0.0.1:6379> KEYS PATTERN //PATTERN为表达式

eg 查看所有的keys eg:redis 127.0.0.1:6379> KEYS *

查找以 w3c 为开头的 key:redis 127.0.0.1:6379> KEYS w3c*

exists key 判断是否存在key

expire key 10 10秒过期

ttl key-name 查看过期时间有几秒

persist 移除键的过期时间

pexpire key 1000 毫秒过期

 

String:

set:给变量赋值 eg set hello world

get 获取变量的值 eg get hello

del 删除变量 eg del hello

append 将值添加到变量的尾部

getrange 获取变量从start 到end的字符串 eg:set hello helloworld

getrange hello 5 10 返回结果集world

setrange 设置从start开始的子串给变量 eg setrange hello 5 xiaoming 返回结果helloxiaoming

mset key1 value1 key2 value2 key3 value3 设置多个key -value mget key1 key2 key3 获取多个key的value

String 可以存储三种类型的数据 字节串 整数 浮点数

关于数值的操作命令包括

incr 变量自增每次加一 eg set num 1

incr num 此时num大小为2

decr 将存储的变量的值减一 eg decr num 此时num的值又变成了一

incrby 将变量存储的加上一个固定的数字 eg incrby num 100此时 num=101

decrby 将变量减去一个固定的数字 eg decrby num 100 此时num=1

incrbyfloat 将变量上添加一个浮点数

 

List:

lpush mylist a b c 左插入 rpush mylist x y z 右插入 lrange mylist 0 -1 数据集合 lpop mylist 移除最左端元素并弹出元素 rpop mylist 移除最右端元素并弹出元素 llen mylist 长度 lrem mylist count value 删除(若索引count的值为value删除成功否则删除失败) lindex mylist 2 获取指定索引的值 lset mylist 2 n 索引设值 ltrim mylist 0 4 保留0到4的数据其余的删除key linsert mylist before a 插入 linsert mylist after a 插入 rpoplpush list list2 转list右端的数据放入list2列表的最左端,并返回数据

brpoplpush list list2 timeout 转list右端的数据放入list2列表的最左端,或者在timeout秒阻塞的等待可弹出元素放入list2列表的最左端并返回数据

blpop list1, list2 timeout 从非空列表中弹出最左端的元素,或者在timeout秒阻塞的等待可弹出元素

bpop list1, list2 timeout 从非空列表中弹出最右端的元素,或者在timeout秒阻塞的等待可弹出元素

 

set sadd myset redis smembers myset 数据集合 srem myset set1 删除 sismember myset set1 判断元素是否在集合中 scard key_name 个数 sdiff | sinter | sunion 操作:集合间运算:差集 | 交集 | 并集

sdiffstore dest-key key-name [key-name]将第一个集合包含而其他集合不包含的的数据保存到dest-key[数学差集运算]

sinterstore dest-key key-name [key-name]将所有同时存在所有集合上的元素保存到dest-key[数学交集运算]

sunionstore dest-key key-name [key-name]将至少存在一个集合上的元素保存到dest-key[数学并集运算] srandmember 随机获取集合中的元素 spop 从集合中弹出一个元素,并移除返回的元素

smove source-key dest-key item 如果source-key包含item则将item移除,并添加到dest-key里,移除成功返回1 失败返回0

 

hash hset myhash name cxx hget myhash name hmset myhash name cxx age 25 note "i am notes" hmget myhash name age note hgetall myhash 获取所有的 hexists myhash name 是否存在 hsetnx myhash score 100 设置不存在的 hincrby myhash id 1 将id存储的整数加一

hincrbyfloat myhash id 1 将id存储的值加一个浮点数 hdel myhash name 删除 hkeys myhash 只取key hvals myhash 只取value hlen myhash 长度

 

zset zadd zset 1 one zadd zset 2 two zadd zset 3 three zincrby zset 1 one 增长分数 zscore zset two 获取分数 zrange zset 0 -1 withscores 范围值 zrangebyscore zset 10 25 withscores 指定范围的值 zrangebyscore zset 10 25 withscores limit 1 2 分页 Zrevrangebyscore zset 10 25 withscores 指定范围的值 zcard zset 元素数量 Zcount zset min max获得指定分数范围内的元素个数 Zrem zset one two 删除一个或多个元素 Zremrangebyrank zset 0 1 按照排名范围删除元素 Zremrangebyscore zset 0 1 按照分数范围删除元素 Zrank zset 0 -1 排序分数最小的元素排名为0 Zrevrank zset 0 -1 倒分数最大的元素排名为0 Zinterstore zunionstore rank:last_week 7 rank:20150323 rank:20150324 rank:20150325 weights 1 1 1 1 1 1 1

 

排序: sort mylist 排序 sort mylist alpha desc limit 0 2 字母排序 sort list by it:* desc by命令 sort list by it:* desc get it:* get参数 sort list by it:* desc get it:* store sorc:result sort命令之store参数:表示把sort查询的结果集保存起来

 

订阅与发布: 订阅频道:subscribe chat1 发布消息:publish chat1 "hell0 ni hao" 查看频道:pubsub channels 查看某个频道的订阅者数量: pubsub numsub chat1 退订指定频道: unsubscrible chat1 , punsubscribe java.* 订阅一组频道: psubscribe java.*

 

 

 

java对应的redis ---Jedis jedis = new Jedis("localhost")

 

(1)String api

.set("","") ---赋值 *** jedis.set("myWift","范冰冰");

.get("") ---取值 *** jedis.get("myWife");

.exist("") ---判断是否存在 *** jedis.exist("myWife");

.append("","") ---追加 *** jedis.append("myWife"," is very beautiful");

.del("") ---删除 *** jedis.del("myWife");

.mset("","","","") --- 一次设置多个值 *** jedis.mset("myFather","ybl","myMother","zjh","mybrother","ytj","mySister","yth");

.mget("","","","") --- 一次取多个值 *** jedis.mget("myFather","myMother","mybrother","mySister");

.strlen("") ---获取字符串的长度 *** jedis.strlen("myWife");

 

 

(2)list api

list头部(左边),尾部(右边)

.lpush("","") ---list集合头部添加元素 *** jedis.lpush("myPlayer","kobe");

.rpush("","") ---list集合尾部添加元素 *** jedis.rpush("myPlayer","james");

.lrange("",start,end) ---遍历list集合里的元素 *** jedis.lrange("myPlayer",0,-1);

.llen("") ---获取list集合元素的个数 *** jedis.llen("myPlayer");

.lindex("",index) ---获取list集合下标的元素 *** jedis.lindex("myPlayer",1); @ 下标从0开始

.lpop("") ---获取list集合的头部第一个元素 *** jedis.lpop("mpPlayer");

.lset("",index,"") ---设置list集合下标元素的值 *** jedis.lset("myPlayer",0,"westBook");

 

 

(3)set api

.sadd("","") ---set集合添加元素 *** jedis.sadd("city","长葛");

.smembers("") ---返回set集合 *** jedis.smembers("city");

.sismember("","") ---判断某一元素是否在set集合中 *** jedis.sismember("city","长葛");

.srem("","") ---移除set集合中的某一个元素 *** jedis.srem("city","长葛");

.scard("") ---获取set集合中元素的个数 *** jedis.scard("city")

 

 

(4)hash api

Map<String,String> map = new hashMap<String,String>();

map.put("one","tom");

map.put("two")

.hmset("",map) ---把map放入redis中 *** jedis.hmset("myMap",map);

.hmget("","") ---获取map中的某元素 *** jedis.hmget("myMap","one");

.hexists("","") ---判断map中某元素是否存在 *** jedis.hexists("myMap","one");

.hgetAll("") ---获取map中的所有元素 *** jedis.hgetAll("myMap");

.hkeys("") ---获取map中的key *** jedis.hkeys("myMap");

.hvals("") ---获取map中的value *** jedis.hvals("myMap");

.hlen("") ---获取map中元素的个数 *** jedis.hlen("myMap");

.hdel("","") ---删除map中的某一个元素 *** jedis.hdel("myMap","one");

 

Redis watch 命令监控事务

在 Redis 中使用 watch 命令可以决定事务是执行还是回滚。

用法:WATCH key1 key2 key3 .....监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

 

MULTI 标记一个事务块的开始。执行各类对数据结构进行操作的命令,这个时候这些命令就会进入队列。,最后由 EXEC 命令原子性(atomic)地执行。

 

当 Redis 使用 exec 命令执行事务的时候,它首先会去比对被 watch 命令所监控的键值对,

如果没有发生变化,那么它会执行事务队列中的命令,提交事务;

如果发生变化,那么它不会执行任何事务中的命令,而去事务回滚。

无论事务是否回滚 , Redis 都会去取消执行事务前的 watch 命令

 

Redis 参考了多线程中使用的 CAS (比较与交换, Compare And Swap ) 去执行的。在数据高并发环境的操作中,我们把这样的一个机制称为乐观锁.

127.0.0.1:6379> SET key1 value1

OK

127.0.0.1:6379> WATCH key1

OK

127.0.0.1:6379> MULTI

OK

127.0.0.1:6379> set key2 value2

QUEUED

127.0.0.1:6379> exec

 

unwatch # 取消监视所有key

 

redis 的acid

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
狂神在他的Redis笔记中可能会涉及到一些内容,但是根据提供的引用内容,无法确定具体是哪些内容。可以使用自定义的配置文件来启动Redis服务,使用systemctl命令来启动和关闭服务。\[1\]在复杂的情况下,可以使用专业的消息中间件来进行订阅,但是需要注意如果订阅方的读取消息速度不够快,可能会导致消息积压,影响Redis的性能甚至导致崩溃。\[2\]Redis和Memcached一样,数据都是缓存在内存中,但是Redis会周期性地将更新的数据写入磁盘或记录文件,并通过主从复制实现数据同步。\[3\]如果你有具体的问题或需要更详细的信息,请提供更多的上下文。 #### 引用[.reference_title] - *1* *2* [Redis详细笔记](https://blog.csdn.net/qq_40087648/article/details/109808727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [狂神说 Redis笔记](https://blog.csdn.net/DDDDeng_/article/details/108118544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值