redis基础复习,五大基本数据类型,redis中的事物,redis乐观锁
2021/4/13 2:28:26
本文主要是介绍redis基础复习,五大基本数据类型,redis中的事物,redis乐观锁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
redis概述
redisAPI查询网站
登录退出redis
redis-server redis.conf #打开redis服务 redis-cli #进入redis的命令 shutdown #关闭redis exit #退出redis
快捷清屏的方式
CTRL+L
redis默认一共有16个数据库
redis是不区分大小写的
基本数据类型string
切换数据库(数据库的编号从0开始的) select 3 清空数据库 flushdb #清空当前数据库 flushall #清空所有数据库 设置键值(存在会覆盖掉原来的值) set key value 根据键值获取值 get key 返回所有键 keys * keys key #存在key则会返回1 不存在返回0 判断一个字符串是否存在 exiists key #存在key则会返回1 不存在返回0 移除key move key db #从哪个数据库移除key 设置key的过期时间 expire key seconds #设置key的过期时间,单位是秒 查看key的剩余时间 ttl key 追加字符串 append key value #在key的末尾追加字符串value。返回字符串的长度 获取字符串的长度 strlen key #获取key的长度 数字的自增自减,设置步长 incr key #将key自增1 decr key #将key自减1 incrby key inrement #将key自加increment decrby key decrement #j将key自减decrement 截取字符串(前后都包括)原字符串不改变 getrange key a b #截取key的[a,b] getrange key 0 -1 #获取字符串key 替换字符串(字符串的角标从0开始)key的offset开始的value长度个字符被替换成value, setrange key offset value #从key的offset处替换value 设置字符串(如果不存在再设置)(如果存在key,则设置key失败) setnx key value 设置字符串和过期时间 setex key seconds value #设置字符串key的value和过期时间seconds 同时设置多个值 mset key1 value1 key2 value2 ..... 设置多个key(不存在再设置) msetnx key1 value1 key2 value 2 #原子性操作!!!! 同时获取多个值 mget key1 key2 ..... 先get再set(先获取key的值再重新设置key的值) getset key value
基本数据类型List列表
所有list命令都是l开头的
按顺序向list中头部添加元素 lpush key element .... 获取list中的值 lrange key start stop lrange list 0 -1 #获取list集合中全部的元素,从头到尾输出 按顺序向list的尾部添加元素 rpush key element ...... 从list的头部开始按顺序删除count个元素并返回元素 lpop key coount 从list的尾部开始桉顺序删除count个元素并返回元素 rpop key count 通过下标获取list中指定位置的值(下标从0开始) lindex key index 返回list的长度 llen key 移除指定元素 lrem key count element #从集合key中移除count个元素element,若集合中element的数量小于count也不会报错 截取list(原来的集合会改变) ltrim key start stop (start和stop为边界下标[start,stop]) 将list中最后一个元素移除,并放入新的列表中 rpoplpush source destination #source是被删除的集合,destination 是加入元素的集合 判断列表是否存在 exists key 将列表中指定下标的值替换为另外一个值 lset key index element 插入操作 linsert key before|after pivot element # pivot 表述元素的值
基本数据类型set集合
set中的值是不能重复的,是无序的(存入和取出的孙祖不是一致的)
所有set的命令都是s开头的
集合中添加元素 sadd key member .... 查看set集合中所有的值 smembers key 判断某一个集合是否在集合中 sismember key member 获取set集合中元素的个数 scard key 移除set集合中指定的元素 srem key member ....... 随机抽取count个元素 srandmember key [count] # []表示可以可无 随机删除set集合中的元素 spop key [count] 将set集合中指定的值移动到另一个set集合中 smove source destination member 两个set集合的差集 sdiff key [key1.....] # key中和[key1]中都不同的元素 两个set集合的交集 sinter key [key1.....] # key中和[key1]中都相同的元素 两个set集合的并集 suion key [key1......] # key和[key1]的并集
基本数据类型hash
hash的命令都是h开头的
可以理解是数据结构中的hashMap,
添加元素 hset key filed value [filed value] 获取hash集合中某一个具体的值 hget key filed 获取多个字段的值 hmget key filed ..... 获取hash集合中全部的数据 hgetall key 删除hash集合中指定的key字段,对应的value会自动被删除 hdel key filed ....... 获取hash集合的长度 hlen 判断hash中指定字段是否存在 hexists key filed 只获取所有key hkeys key 只获取所有value hvals key 对hash集合中的元素进行自增运算 hincrby key filed increment # 将集合key中的 filed 进行自增运算,increment可以是负数 如果不存在filed则设置filed hsetnx key filed value
基本数据类型有序集合zset
在set的基础上,增加了一个值,用来进行排序
所有的zset命令都是z开头
添加元素 zadd score member [score member] 显示集合的全部数据 从小到大 zrangebyscore key-inf +inf 显示集合的全部数据 从大到进行排序 zrevrange key 0 -1 显示全部的用户并且附带score zrangebyscire key -inf +inf withscores # [-inf ,+inf ] 查找的范围 移除有序集合中的指定元素 zrem key member 获取zset集合中元素的个数 zcard key 获取指定区间的成员数量 zcount key min max # [min ,max] 表示区间
还有三种特殊数据类型自己去查API吧
-
Geospatial地理位置
-
Hyperloglog(可以找不重复的元素)
-
Bitmap(位图)
redis官方网站
redis中的事物
- redis中的事物没有隔离的概念
- redis中的事物不保证原子性(每一条命令是保证原子性的)
- redis中事物的本质就是一组命令的集合
redis中事物执行的流程
- 开启事务 (multi)
- 命令入队
- 执行事物 / 取消事物(exec)
开启事务 multi 命令.... 执行事物 exec 取消事物 discard
取消事物,事物内的命令都不会被执行
异常
- 编译型异常(语法错误)事物内的语句都不会被执行
- 运行时异常(逻辑错误)事物内的正常语句会执行成功
redis的监视器(乐观锁)
watch key #获取key的监视器 unwatch key #释放锁
- 当key被获取了监视器后,只有事物执行结束后或者执行了unwatch是key的监视器才会被释放(这个事物中必须要使用到被获取了监视器的key)
- 获取监视器相当于对key的value进行了快照(记录),如果在事务执行中发现key的值被改变了==(不会产生ABA问题)==,那么事物就不会执行成功
- 如果事物没有执行成功会释放key的监视器
- redis的监视器可以理解为并发编程中CAS原子操作
这篇关于redis基础复习,五大基本数据类型,redis中的事物,redis乐观锁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31Tiny RDM:你的下一代Redis桌面GUI神器-icode9专业技术文章分享
- 2024-03-21redisinsight-v2
- 2024-02-26Typed property App\Api\Mapper\GamePropsConfigMapper::$apiRedis must not be accessed before initia-icode9专业技术文章分享
- 2024-02-21redisson getlock
- 2024-02-20redis config
- 2024-02-20redis leaderboard
- 2024-01-23缓存选型:Redis or MemCache
- 2024-01-22面试官:Redis持久化能关吗?怎么关?
- 2024-01-21Redis压测工具redis-benchmark-icode9专业技术文章分享
- 2024-01-19这才是你应该了解的Redis数据结构!