一、启动
1、服务端启动
redis-server
2、客户端启动
(1)redis-cli 不支持中文
(2)redis-cli --raw 支持中文
3、运行测试命令
ping
返回PONG则代表连通
二、切换数据库
1、切换数据库
select n
redis一共有15个数据库,故0≤n≤15,默认为0数据库
三、redis键值对说明
1、redis是key-value的数据结构
2、每条数据都是一个键值对
3、键(key)的类型是字符串(string)
4、值(value)的类型分为5种:字符串(string)、哈希(hash)、列表(list)、无序集合(set)、有序集合(zset)
四、字符串(string)
说明:字符串是redis最基本的类型
1、添加修改值 set
格式:set key value
如果键存在则是添加
如果不存在则是修改
案例:set user1 aa 添加一个键为user1 值为aa
set user1 bb 将键为user1的值修改为bb
2、设置键值及过期时间 setex
格式:setex key seconds value 这里过期时间seconds的单位为秒
案例:setex user2 5 cc 设置键为user2 值为cc 过期时间为5s
3、设置多个键值 mset
格式:mset key1 value1 key2 value2 ...
案例:mset user3 dd user4 ee
4、追加值 append
格式:append key value
案例:append user1 ff get user1就返回bbff
5、获取值 get/mget
(1)获取单个值
格式:get key
案例:get user3 返回dd
(2)获取多个值
格式:mget key1 key2 ...
案例:mget user3 user4 返回dd ee
6、查找 keys
格式1:keys key 查找单个键值对
格式2:keys * 查找所有键值对
案例1:keys user1
返回user1则该键查找到了
返回为空则该键没查找到
案例2:keys *
返回 user1 user3 user4
7、查看键值对是否存在 exists
格式:exists key
返回:
1:存在;
0:不存在
8、查看键值对类型 type
格式:type key
案例:type user1
返回:string
9、设置键过期时间 expire
格式:expire key second
案例:expire user1 5 给user1设置5s过期
注:expire跟setex的区别:expire是给已存在的键值对设置过期时间,而setex则是添加键值对并且设置过期时间
10、查看过期时间 ttl
格式:ttl key
说明:
返回值:>0:实时有效时间,单位s,=-1:永久有效;=-2:键值对不存在
11、删除 del
(1)删除单个键值对
格式:del key
案例:del user3
(2)删除多个键值对
格式:del key1 key2 ...
案例:del user3 user 4
五、哈希(hash)
说明:
(1)、hash是用于存储'键值对'集合
(2)、每个hash中的键可以理解为字段(filed),一个字段(filed)对应一个值(value)
(3)、hash中值(value)的类型为字符串(string)
(4)、同一个hash中字段名(filed)不可重复
1、新增单个字段 hset
格式:hset key filed value
案例:hset huser1 name tom 新增一个hash,其中key为huser1,filed为name,value为tom
2、新增多个字段 hmset
格式:hmset key filed1 value1 filed2 value2 ...
案例:hmset huser2 name marry sex nv age 10
新增一个hash,key为huser2,filed1为name,value1为marry,filed2为sex,value2为nv,filed3为age,value2为10
3、获取hash中的键和值 hget/hkeys/hvals/hgetall
(1)获取单个值 hget
格式:hget key filed
案例:hget huser2 name ---->marry
(2)获取多个值 hmget
格式1:hkeys key filed1 filed2
案例:hmget huser2 name sex ---->marry nv两个值
(3)获取所有字段 hkeys
格式:hkeys key
案例:hkeys huser1 ---->name sex age三个键
(4)获取所有值hvals
格式:hvals key
案例:hvals huser2 ---->marry nv 10三个值
(5)获取包含字段(filed)的值(value):hgetall
格式:hgetall key
案例:hgetall huser2 ----> name marry sex nv age 10
4、删除值 hdel
格式:hdel key filed1 filed2 ...
案例:hdel huser2 name sex
hgetall huser2 ---->age 10只剩最后一个组了
5、删除整个hash del
格式:del key
案例:del huser2
keys * ---->空,证明被删除了
六、列表
说明:
(1)、列表中的value的类型为string
(2)、列表中每个值按添加的顺序排列
(3)、列表中的每个值是可以重复的
1、新增 lpush/rpush/linsert
(1)从左侧添加 lpush
格式:lpush key value1 value2 value3
案例:lpush luser1 aa bb cc
(2)从右侧添加 rpush
格式:rpush key value1 value2 value3
案例:rpush luser1 dd ee ff
(3)按指定位置添加 linsert
格式:linsert key before/after value(指定值) value1
案例:linsert luser1 before dd xx 在dd左侧添加一个xx
2、获取 lrange
格式:lrange key start stop 按索引获取
案例:lrange luser1 0 -1 ---->cc bb aa xx dd ee ff
说明:0代表首位,-1代表末尾 故此处是获取整个列表
3、修改 lset
格式:lset key index value 按照指定索引位置修改
案例:lset key 3 yy
lrange luser1 0 -1 ---->cc bb aa yy dd ee ff,xx变为yy了
4、删除值 lreml
(1)删除单个或多个相同值
格式:lrem key count value (count>0:从头往为删count个value,count=0:删除所有value,count<0:从尾往头删count个value)
案例:新增列表:rpush luser2 h0 h1 h2 h3 h0 h1 h2 h0 h1 h2
(1)从头往尾删除2个h0
lrem luser2 2 h0
lrange luser1 0 -1 ---->h1 h2 h3 h1 h2 h0 h1 h2,此处前两个h0被删除了
(2)从尾往头删除2个h1
lrem luser2 -2 h1
lrange luser1 0 -1 ---->h1 h2 h3 h2 h0 h2 后两个h1被删除了
(2)删除所有h2
lrem luser2 0 h2
lrange luser1 0 -1 ---->h1 h3 h0 此处h2被删除完了
5、删除列表 del
格式:del key
案例:del luser1
keys * ---->空,
七、有序集合 set
说明:
(1)有序集合里的value类型为string
(2)集合里不允许存在重复值
(3)集合里的值只能添加和删除,不能修改
1、新增/添加 sadd
key存在则为添加
key不存在则新增
格式:sadd key value1 value2 ...
案例:sadd suser1 aa bb cc dd
2、返回 smembers
格式:smembers key
案例:smembers suser1 ---->aa bb cc dd
3、删除指定值 srem
格式:srem key value1 value2
案例:srem suser1 aa bb
smembers suser1 ---->cc dd ,aa和bb已经被删除
4、删除集合 del
格式:del key
案例:del suser1
keys * ---->空 证明已经被删除了
八、有序集合 zset
说明:
(1)有序集合里的value类型为string
(2)集合里不允许存在重复值
(3)每个值都会关联一个分数(score),分数(score)可以为负数
(4)集合里的值只能添加和删除,不能修改
1、新增/添加 zadd
key存在则为添加
key不存在则新建
格式:zadd key score1 value1 score2 value2 ...
案例:zadd zuser1 1 aa 5 bb 8 cc 3 dd
2、获取 zrange/zrangebyscore/zscore
(1)获取所有 zrange
格式:zrange key start stop
案例:zrange zuser1 0 -1 ---->aa bb cc dd
(2)获取所有值及分数 zrange
格式:zrange key start stop withscores
案例:zrange zuser1 0 -1 withscores -->aa 1 bb 5 cc 8 dd 3
(3)按分数范围获取 zrangebyscore
格式:zrangebyscore key min max
案例:zrangebyscore zuser1 2 6 ---->dd bb
(4)返回值的分数 zscore
格式:zscore key value
案例:zscore zuser1 aa ---->1
3、删除值 zrem
(1)删除指定值 zrem
格式:zrem key value1 value2 ...
案例:zrem zuser1 aa bb
zrange zuser1 0 -1 ---->cc dd,aa和bb被删除
(2)按分数范围删除 zremrangebyscore
格式:zremrangebyscore key min max
案例:zremrangebyscore zuser1 2 6 删除分数在2到6之间的值
zrange zuser1 0 -1 ---->dd,只剩dd了,aa和bb在上面已经被删除了,集合里还剩cc 8 dd 3,dd的分数在2到6之间,故删除,就只剩dd
4、删除集合 del
格式 del key
案例:del zuser1
keys * ---->空,证明已经被删除了
注:redis错误解决:
错误提示:(error) MISCONF Redis is configured to save RDB snapshots
解决方法:127.0.0.1:6379> CONFIG SET stop-writes-on-bgsave-error no
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:redis增删改查 - Python技术站