Redis学习记录03

12、redis中的操作命令:
1)、redis中有关key的操作命令:
2)、redis中有关string类型数据的操作命令:单key-单value
3)、redis中有关list类型数据的操作命令:单key-多有序value


一个key对应多个value;
多个value之间有顺序,最左侧是表头,最右侧是表尾;
每一个元素都有下标,表头元素的下标是0,依次往后排序,最后一个元素下标是列表长度-1;
每一个元素的下标又可以用负数表示,负下标表示从表尾计算,最后一个元素下标用-1表示;
元素在列表中的顺序或者下标由放入的顺序来决定。
通过key和下标来操作数据。


a)将一个或者多个值依次插入到列表的表头(左侧):lpush key value [value value .....]
lpush list01 1 2 3 结果:3 2 1
lpush list01 4 5 结果:5 4 3 2 1


b)获取指定列表中指定下标区间的元素:lrange key startIndex endIndex
lrange list01 1 3 结果:4 3 2
lrange list01 1 -2 结果: 4 3 2
lrange list01 0 -1 结果:5 4 3 2 1


c)将一个或者多个值依次插入到列表的表尾(右侧):rpush key value [value value .....]
rpush list02 a b c 结果:a b c
rpush list02 d e 结果:a b c d e
lpush list02 m n 结果: n m a b c d e


d)从指定列表中移除并且返回表头元素即返回左边的元素:lpop key
lpop list02


e)从指定列表中移除并且返回表尾元素:rpop key
rpop list02


f)获取指定列表中指定下标的元素:lindex key index
lindex list01 2 结果:3


g)获取指定列表的长度:llen key
llen list01


h)根据count值移除指定列表中跟value相等的数据:lrem key count value
|->count>0:从列表的左侧移除count个跟value相等的数据;
|->count<0:从列表的右侧移除count个跟vlaue相等的数据;
|->count=0:从列表中移除所有跟value相等的数据
lpush list03 a a b c a d e a b b 结果:b b a e d a c b a a
lrem list03 2 a 结果:b b e d c b a a
lrem list03 -1 a 结果:b b e d c b a
lrem list03 0 a 结果:b b e d c b


i)截取指定列表中指定下标区间的元素组成新的列表,并且赋值给key:ltrim key startIndex endIndex
lpush list04 1 2 3 4 5 结果:5 4 3 2 1
ltrim list04 1 3
lrange list04 0 -1 结果:4 3 2


j)将指定列表中指定下标的元素设置为指定值: lset key index value
lset list04 1 10


l)将value插入到指定列表中位于pivot元素之前/之后的位置: linsert key before/after pivot vlaue
linsert list04 before 10 50
linsert list04 after 10 60


4)、redis中有关set类型数据的操作命令:单key-多无序value,类似于java中的Map<String,Set>
一个key对应多个vlaue;
value之间没有顺序,并且不能重复;
通过业务数据直接操作集合。


a)将一个或者多个元素添加到指定的集合中:sadd key value [value value ....]
*如果元素已经存在,则会忽略。
*返回成功加入的元素的个数
sadd set01 a b c a 结果:a b c
sadd set01 b d e


b)获取指定集合中所有的元素:smembers key
smembers set01


c)判断指定元素在指定集合中是否存在:sismember key member
*存在,返回1
*不存在,返回0
sismember set01 f
sismember set01 a


d)获取指定集合的长度:scard key
scard set01

 

 


e)移除指定集合中一个或者多个元素:srem key member [member .....]
*不存在的元素会被忽略
*返回成功成功移除的个数
srem set01 b d m

 


f)随机获取指定集合中的一个或者多个元素:srandmember key [count]
|->count>0:随机获取的多个元素之间不能重复
|->count<0: 随机获取的多个元素之间可能重复
sadd set02 1 2 3 4 5 6 7 8
srandmember set02
srandmember set02 3
srandmember set02 -3


g)从指定集合中随机移除一个或者多个元素:spop key [count]
spop set02


h)将指定集合中的指定元素移动到另一个元素:smove source dest member
smove set01 set02 a


i)获取第一个集合中有、但是其它集合中都没有的元素组成的新集合:sdiff key key [key key ....]
sdiff set01 set02 set03


j)获取所有指定集合中都有的元素组成的新集合:sinter key key [key key ....]
sinter set01 set02 set03


k)获取所有指定集合中所有元素组成的大集合:sunion key key [key key .....]
sunion set01 set02 set03  相当于组合去重


5)、redis中有关hash类型数据的操作命令:单key:field-value
field-value
.....
studentzs:id-1001
name-zhangsan
age-20


a)将一个或者多个field-vlaue对设置到哈希表中:hset key filed1 value1 [field2 value2 ....]
*如果key field已经存在,把value会把以前的值覆盖掉
hset stu1001 id 1001
hset stu1001 name zhangsan age 20//这个会报错


b)获取指定哈希表中指定field的值:hget key field
hget stu1001 id
hget stu1001 name


c)批量将多个field-value对设置到哈希表中: hmset key filed1 value1 [field2 value2 ....]
hmset stu1002 id 1002 name lisi age 20


d)批量获取指定哈希表中的field的值:hmget key field1 [field2 field3 ....]
hmget stu1001 id name age


e)获取指定哈希表中所有的field和value:hgetall key
hgetall stu1002

 

 


f)从指定哈希表中删除一个或者多个field:hdel key field1 [field2 field3 ....]
hdel stu1002 name age


g)获取指定哈希表中所有的filed个数:hlen key
hlen stu1001
hlen stu1002


h)判断指定哈希表中是否存在某一个field:hexists key field
hexists stu1001 name
hexists stu1002 name


i)获取指定哈希表中所有的field列表:hkeys key
hkeys stu1001
hkeys stu1002


j)获取指定哈希表中所有的value列表:hvals key
hvals stu1001
hvals stu1002


k)对指定哈希表中指定field值进行整数加法运算:hincrby key field int
hincrby stu1001 age 5


l)对指定哈希表中指定field值进行浮点数加法运算:hincrbyfloat key field float
hset stu1001 score 80.5
hincrbyfloat stu1001 score 5.5


m)将一个field-vlaue对设置到哈希表中,当key-field已经存在时,则放弃设置;否则,设置file-value:hsetnx key field value
hsetnx stu1001 age 30


6)、redis中有关zset类型数据的操作命令:有序集合
本质上是集合,所有元素不能重复;
每一个元素都关联一个分数,redis会根据分数对元素进行自动排序;
分数可以重复;
既然有序集合中每一个元素都有顺序,那么也都有下标;
有序集合中元素的排序规则又列表中元素的排序规则不一样。
a)将一个或者多个member及其score值加入有序集合:zadd key score member [score member ....]
*如果元素已经存在,则把分数覆盖
zadd zset01 20 z1 30 z2 50 z3 40 z4
zadd zset01 60 z2
b)获取指定有序集合中指定下标区间的元素:zrange key startIndex endIndex [withscores]
zrange zset01 0 -1
zrange zset01 0 -1 withscores
c)获取指定有序集合中指定分数区间(闭区间)的元素:zrangebyscore key min max [withscores]
zrangebyscore zset01 30 50 withscores
d)删除指定有序集合中一个或者多个元素:zrem key member [member......]
zrem zset01 z3 z4
e)获取指定有序集合中所有元素的个数:zcard key
zcard zset01
f)获取指定有序集合中分数在指定区间内的元素的个数:zcount key min max
zcount zset01 20 50
g)获取指定有序集合中指定元素的排名(排名从0开始): zrank key member
zrank zset01 z4 ===>2
h)获取指定有序集合中指定元素的分数:zscore key member
zscore zset01 z4
i)获取指定有序集合中指定元素的排名(按照分数从大到小的排名,从0开始):zrevrank key member
zrevrank zset01 z4 ===>1


13、redis的配置文件:
1)、redis安装完成之后,在redis的根目录提供一个配置文件(redis.conf);redis服务可以参考配置文件中的参数进行运行;如果改动了redis配置文件中的参数,只有启动redis服务器指定使用的配置文件,参数才会生效;否则,redis会采用默认的参数运行。
2)、redis配置信息:
port:配置redis服务运行的端口号;如果不配置port,则redis服务默认使用6379端口
bind: redis服务被客户端连接时,客户端所能使用的ip地址。
默认情况下,不配置bind,客户端连接redis服务时,通过服务器上任何一个ip都能连接到redis服务;一旦配置了bind,客户端就只能通过bind指定的ip地址连接redis服务。
一般情况下,bind都是配置服务器上某一个真实ip

redis-cli :默认连接127.0.0.1本机上的6379端口服务
redis-cli -h 127.0.0.1 -p 6379:同上
redis-cli -h 192.168.11.128 -p 6379:

*强调:一旦redis服务配置了port和bind(如果port不是6379、bind也不是127.0.0.1),客户端连接redis服务时,就要指定端口和ip:
redis-cli:默认连接127.0.0.1上的6379服务
redis-cli -h bind绑定的ip地址 -p port设置的端口:连接bind绑定的ip地址主机上的port设置的端口redis服务;


关闭redis服务时:redis-cli -h bind绑定的ip地址 -p port设置的端口 shutdown

 

posted @   理塘DJ  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示