reedis 基本操作

redis的基本知识

切换数据库

redis默认有16个数据库,通过0-15标识,默认使用的是第0个数据库,可以使用select切换数据库

select 1  #切换1数据库
DBSIZE  #查看DB大小
flushdb #清空当前库
flushall #清空数据库
 
 
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> DBSIZE  
0
127.0.0.1:6379[1]> 
 
 

redis 键值对说明

  • redis是key-value的数据结构

  • 每一条数据都是一个“键值对”

  • key的类型永远是string字符串

  • value类型有五种:

    1. 字符串 string

    2. 哈希 hash

    3. 列表 list

    4. 无序集合 set

    5. 有序集合 zset

  • Redis三种特殊数据类型

    1. geospatial 地理位置 (定位、附近的人、打车距离……)

    2. hyperloglog 基数 (不重复的元素个数) 可以接受误差 大概有0.81%的错误率

    3. bitmaps 位存储 长用于统计用户信息 活跃 不活跃 登录 未登录 打卡

字符串 string

string介绍

字符串 string是redis中最基本的类型

增加、修改

如果键存在,就是修改;如果键不存在,就是添加

redis 中字符串(string)可以用单引号'',或者双引号""引起来,也可以省略引号,如"china"、'china'、china 都可以

设置键
set key value
 
 

如: set 'user1' 'aaa'

127.0.0.1:6379> set 'user1' 'aaa'
OK
127.0.0.1:6379> set 'user1' 'bbb'
OK
127.0.0.1:6379> get user1
bbb
 
 
设置键值及过期时间,以秒为单位
setex key seconds value 
 
 

如:添加一个键user2,值是bbb,过期时间是3s

127.0.0.1:6379> setex user2 3 bbb
OK
 
 
添加多个键值对 mset

mset key1 value1 key2 value2...

127.0.0.1:6379> mset user3 ccc user4 ddd user5 eee
OK
127.0.0.1:6379> keys *  
user1
user4
user5
user3
 
 
在已有值后面追加值 append
127.0.0.1:6379> append user1 1234
7
127.0.0.1:6379> get user1
bbb1234
 

获取

获取单个值 get
127.0.0.1:6379> get user1
bbb1234
 
 
获取多个值 mget
127.0.0.1:6379> mget user1 user2 user3 user4 user5
bbb1234

ccc
ddd
eee
 
 

删除

删除键 del
127.0.0.1:6379> del user5
1
127.0.0.1:6379> mget user1 user2 user3 user4 user5
bbb1234

ccc
ddd

127.0.0.1:6379> del user3 user4
# 删除多个键
2
127.0.0.1:6379> mget user1 user2 user3 user4 user5.
bbb1234




127.0.0.1:6379> 
 
 

键命令

查找键 keys

查看所有键 keys *
keys *  #查看所有key
127.0.0.1:6379> keys *
user2
user4
user1
user5
test
user3
 
 
查看指定键 keys
127.0.0.1:6379> keys user1
user1
127.0.0.1:6379> keys user0

127.0.0.1:6379> 
 
 

判断键是否存在 exists ; 存在返回1,不存在返回0

127.0.0.1:6379> exists user1
1
127.0.0.1:6379> exists user0
0
127.0.0.1:6379> 
 
 

查看键值类型 type user2

127.0.0.1:6379> type user1
string
 
 

对已经存在的键追加过期时间 expire 'user2' 100

127.0.0.1:6379> expire 'user2' 100
1
 

查看键有效时间 ttl

  • 返回>0,代表有效时间 s

  • 返回-1,永远有效

  • 返回-2,键不存在

127.0.0.1:6379> ttl user2
22
127.0.0.1:6379> ttl user1
-1
127.0.0.1:6379> ttl user0
-2
 
 

哈希 hash

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

hash是一个string类型的field和value的映射表.一个key可对应多个field,一个field对应一个value。将一个对象存储为hash类型,较于每个字段都存储成string类型更能节省内存

增加、修改

如果设置的字段存在,就是修改;如果字段不存在,就是添加

hset key field value
# 设置一个key中的属性映射
hmset key field1 value1  field2 value2
# hmset:批量设置属性映射
 

案例:

增加一个hash类型键值对huser1,字段为name,值为tom
127.0.0.1:6379> hset huser1 name tom
1
 
 
添加多个hash字段值 hmset huser2 name mary sex female
127.0.0.1:6379> hmset huser2 name mary sex female
OK
 
 

获取

获取指定键所有的字段。

hkeys key

案例:获取键“huser2”的所有字段

127.0.0.1:6379> hkeys huser2
name
sex
 
获取一个字段对应的值

hget key field

案例:获取键“huser2”字段“name”的值

127.0.0.1:6379> hget huser2 name
mary
 
获取多个字段的值

hmget key field1 field2 ...

案例:获取键“huser2”字段“name”、“sex”的值

127.0.0.1:6379> hmget huser2 name sex
mary
female
 
 
获取所有字段的值

hvals key

案例:获取键“huser2”所有字段的值

127.0.0.1:6379> hvals huser2
mary
female
 
获取所有字段名包括字段对应的值

hgetall key

案例:获取键“huser2”所有字段名包括字段对应的值

127.0.0.1:6379> hgetall huser2
name
mary
sex
female
 

删除

删除hash中指定字段

字段对应的值会一起删除

hdel key field1 field2 ...

案例:删除键’huser2‘的字段 ’sex‘

127.0.0.1:6379> hdel huser2 sex
1
 
 
删除整个hash键及字段与值 ,使用del命令

del key1 key2 ...

案例:删除键"huser1","huser2"

127.0.0.1:6379> del huser1 huser2
2
 
 

列表list

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。

redis中,可以将list用作栈、队列、阻塞队列的数据结构
所有list命令都是以l,r开头

redis列表是链表型的数据结构,所以它的元素是有序的,而且列表内的元素是可以重复的

增加

从左侧插入值

lpush key value1 value2 ...

案例:新建一个键luser1,向左侧添加值aa

127.0.0.1:6379> lpush luser1 aa
1
 
 
从右侧插入值

rpush key value1 value2 ...

案例:在键luser1的右侧添加值bb

127.0.0.1:6379> rpush luser1 bb
2
127.0.0.1:6379> rpush luser1 cc dd
4
 
 
在指定的值前或者后插入值

linsert key before/after 值 插入的值

案例:向luser1插入值11,插在cc之前

127.0.0.1:6379> linsert luser1 before cc 11
5
 
 


案例:向luser1插入值22,插在cc之后

127.0.0.1:6379> linsert luser1 after cc 22
6
 
 

获取

返回列表里指定范围内的值

  • 索引从左侧开始,第一个值的索引为0;

  • 索引可以是负数,表示从尾部开始计数,如:-1表示最后一个值

  • start,stop 为要获取值的索引。

lrange key start stop

案例:获取键luser1的列表所有的值:

127.0.0.1:6379> lrange luser1 0 -1
aa
bb
11
cc
22
dd
 
 
127.0.0.1:6379> lrange luser1 2 4
11
cc
22
 

修改

设置修改指定索引位置的值

lset key index value

案例:把键luser1的列表中索引为1的即第二个元素的值改为china

127.0.0.1:6379> lset luser1 1 china
OK
127.0.0.1:6379> lrange luser1 0 -1
aa
china
11
cc
22
dd
 
 

删除

lrem key count value

  • count: 将列表中前count次出现的值移除

  • count>0 从头往尾删除

  • count<0 从尾往头删除

  • count=0 删除所有值(重复值)

现有一个luser2

127.0.0.1:6379> rpush luser2 h0 h1 h2 h3 h0 h1 h0 h1
8
127.0.0.1:6379> lrange luser2 0 -1
h0
h1
h2
h3
h0
h1
h0
h1
 
 

案例:从键luser2 列表右侧开始删除1个h1

127.0.0.1:6379> lrem luser2 -1 h1
1
127.0.0.1:6379> lrange luser2 0 -1
h0
h1
h2
h3
h0
h1
h0
 
 

案例:从键luser2 列表左侧开始删除2个h1

127.0.0.1:6379> lrem luser2 2 h1
2
127.0.0.1:6379> lrange luser2 0 -1
h0
h2
h3
h0
h0
 
 

案例:从键luser2 列表中删除所有的h0

127.0.0.1:6379> lrem luser2 0 h0
3
127.0.0.1:6379> lrange luser2 0 -1
h2
h3
 
 

无序集合set

一个键中有一个set,一个set中有多个无序的字符串
集合中不允许有重复值,所以只能添加删除查询,不能修改

添加

集合中添加值

sadd key value1 value2...

案例:向键suser1 的集合添加值aa ,bb,cc

127.0.0.1:6379> sadd suser1 aa bb cc 
3
 

获取集合值

smembers key

案例:获取键suser1 的集合所有值

127.0.0.1:6379> smembers suser1
aa
cc
bb
 
 

删除值

srem key value

案例:删除集合中键为suser1 中的值bb

127.0.0.1:6379> srem suser1 bb
1
127.0.0.1:6379> smembers suser1
aa
cc
 
 

有序集合zset

有序集合中的每一个值都会关联一个分数(score),分数可以为负数,通过分数大小将之排序,通过索引定位值的位置(与列表不同)
只能添加删除,不能修改

添加

zadd key score1 value1 score2 value2...

案例:向键zuser1 的集合中添加值aa ,bb,cc,dd,分数分别为1,5,8,3

127.0.0.1:6379> zadd zuser1 1 aa 5 bb 8 cc 3 dd
4
 
 

获取

获取指定范围内的值

withscores:同时获取对应分数

zrange key start stop [withscores]

案例:获取键zuser1 的集合所有值

127.0.0.1:6379> zrange zuser1 0 -1
aa
dd
bb
cc
127.0.0.1:6379> zrange zuser1 0 -1 withscores
aa
1
dd
3
bb
5
cc
8
 
 
通过score获取值

zrangebyscore key min max

案例:获取键zuser1 的score从2~6之间的值

127.0.0.1:6379> zrangebyscore zuser1 2 6
dd
bb
 
 
通过值返回score

zscore 键 值

127.0.0.1:6379> zscore  zuser1 dd
3
 
 

删除

删除指定值

zrem key value1 value2

127.0.0.1:6379> zrem zuser1 cc dd
2
127.0.0.1:6379> zrange zuser1 0 -1
aa
bb
 
 
通过score删除指定范围的值

zremrangebyscore key min max

127.0.0.1:6379> zremrangebyscore zuser1 0 2
1
127.0.0.1:6379> zrange zuser1 0 -1 withscores
bb
5
posted @ 2023-04-10 10:14  测试玩家勇哥  阅读(22)  评论(0)    收藏  举报