redis基本操作

什么是redis

redis是一个高性能的key-value存储的NoSQL数据存储系统。
为什么是nosql——大数据下需要更好的性能

补充:
1、一共有15个数据库,select 1; 默认是0号库
2、单线程多路IO复用
3、与memchche的区别:支持多数据类型,支持持久化,单线程多路IO复用

基本命令

【数据库操作】

1、选择数据库【0-15】
selectc 16
2、查看key的数量
bdsize
3、云服务器打开客户端
redis-cli
4、查看是否含有key
keys *

5、清空当前库,清空所有库
flushdb
flushall


【常规操作】
1、添加key
set key value

2、查看key是否存在
exists key

3、删除key
del key
unlink key

4、设置过期时间为10s「-1表示用不过期,-2表示已过期」
expire key 10
查看还有多少秒过期
ttl key

5、获取key
get key

 

5种数据类型

字符串

【String:底层的数据结构是一个简单动态字符串,实现有一点类似Java中的ArrayList】
1、追加 「如果是3,表示添加成功;如果是6,表示追加成功」
append key value

2、获得该key的value长度
strlen key

3、只有key不存在时,才设置key的值「1表示设置成功,0表示失败(已经存在该key)」
setnx key 123

4、加减1
incr key
decr key

5、加减10
incrby key 10
decrby key 10

6、设置、得到多个
mset
mget
msetnx

7、获取范围的值「包含前后的值,如0 3 ,则表示0 1 2 3位置的值」
getrange <key> <起始位置> <结束位置>

8、设置某位置的值
setrange <key> <起始位置> <结束位置>

9、添加key,直接设置过期时间
setex <key> <过期时间> <value>

10、查看旧值的同时,更新值,以新换旧
getset <key> <value>

 

列表

【list】「底层原理是双向链表」
1、添加「lpush是逆序,rpush是添加时的顺序」
lpush <key> v2 v3 v4
rpush <key> v2 v3 v4

2、获取所有值
lrange <key> 0 -1

3、获取最左边|最右边的值 「会删除该元素」「值在key在,值光key无」
lpop <key>
rpop <key>

4、从key1右边吐出一个值,插到key2列表的左边
rpoplpush <key1> <key2>

5、获取列表的长度
llen <key>

6、指定位置插入「会在找到的第一个元素后面插入」
linsert <key> before <value> <newValue>
linsert <key> after <value> <newValue>

7、删除指定个数的某元素 「从走往右,删除两个v2元素」
lrem <key> 2 v2

8、替换,将列表key下标为index的值替换成value
lset <key> <index> <value>

 

集合

【Set】「底层结构是value=null的哈希表,添加删除的复杂度都是O(-1)」
1、添加
sadd <key> <value1> <value2> <value3>

2、取值
smembers <key>

3、判断集合中是否含有 <value>,有1,无0
sismember <key> <value>

4、集合大小
scard <key>

5、删除集合中某个元素
srem <key> <value1> <value2> …

6、随机从该集合中吐出一个值,会删除
spop <key>

7、随机从该集合中取出n个值,不会删除
srandmember <key> <n>

8、把value从set1中移到set2中
smove <key1> <key2> <value>

9、返回两个集合的交集元素
sinter <key1> <key2>

10、返回两个集合的并集元素
sunion <key1> <key2>

11、返回两个集合的差集元素(key1中有的元素,key2中没有的)
sdiff <key1> <key2>

 

哈希 

 

有序集合

【hash】【底层结构是压缩列表+哈希表,适合储存对象】

1、添加
zadd <key> <score> <value>
zadd lang 200 java 100 python

2、获取全部
zrange <key> 0 -1
zrange lang 0 -1
zrange lang 0 -1 withscores

3、获取区间中的元素
zrangebyscore <key> 100 200
逆序区间
zrevrangebyscore lang 200 100

4、增加score
zincrby <key> <increment> <value>
zincrby lang 100 java

5、区间内的元素个数
zcount <key> <min> <max>
zcount lang 1 500

6、得到排名(从0开始)
zrank <key> <value>
zrank lang java

7、删除该集合下,指定值的元素
zrem <key> <value>

  

posted @ 2022-10-02 12:44  2337  Views(286)  Comments(0Edit  收藏  举报