Redis从入门到放弃 之 常用命令和基本数据范例操作
一、Redis通用命令
- redis-cli -h 127.0.0.1 -p 6379 redis客户端登录 -h host -p 端口 -a 密码
- exit 退出当前客户端
- info 返回redis的一些相关信息(包括端口、配置文件等)
- flushdb 清空当前库中的所有数据
- flushall 清空所有库中的所有数据
- save 将当前内存中的数据持久化到dump.rdb中(只管保存、其他全部阻塞)
- bgsave 将当前内存中的数据持久化到dump.rdb中(后台异步进行快照操作)
- set k1 v1 设置K / V 键值对 (重复设置、覆盖原来的value)
- get k1 获取 K1对应的值
- keys a* 获取当前库中所有以a开头的key键
- dbsize 查看当前所在库的key的数量
- select 2 选择第3个库
- del k1 删除
- dump k1 序列化给定的key,并返回被序列化的值
- exists k1 k1是否存在,存在返回1、不存在返回0
- expire k1 10 设定k1的过期时间为10秒(只存在10秒,过期后自动删除)(返回1 设置成功、返回0设置失败)
- ttl k1 查看k1的生命周期还有多长时间
- persist k1 移除k1的过期时间,k1将持久保持
- expireat k1 1293840000 设置过期时间为 1293840000(时间戳)
- randomkey 随机返回一个当前库的key
- rename k1 kk1 修改k1的名称为kk1(kk1存在时,原k1的值将覆盖原kk1的值)
- renamenx k1 kk1 仅当kk1不存在时,将k1改为kk1
- type k1 返回k1的所存储值的类型
- move k1 2 将k1移动到第3个库(原库中的k1删除,第三个库中增加k1)
复制代码 二、基本数据范例
Redis支持五种数据范例:string(字符串),hash(哈希),list(列表),set(聚集)及zset(sorted set:有序聚集)
1、string字符串
- string是redis最基本的类型,一个key对应一个value。是二进制安全的,比如jpg图片或者序列化的对象 。
- string类型是Redis最基本的数据类型,一个键最大能存储512MB。
- 常用字符串命令:
- set k1 'helloWorld' 为k1赋字符串值
- get k1 获取k1对应的值
- getset k1 'worldHello' 将k1的值重新设为worldHello并返回k1原来的值he'llWorld (如果k1不存在,则新建k1)
- mget k1 k2 k3获取k1 k2 k3的值
- setex k1 10 'helloWorld'设置k1的值位helloWorld,并将其过期时间设置为10秒
- setnx k1 'testsetnx'k1不存在时,设置k1的值位testsetnx。(成功返回1,不成功返回0)
- setrange k1 1 'bbbb'从偏移量1位置开始 复写k1的原来的值 (原helloWorld,现hbbbbWorld)
- getrange k1 0 2 获取(截取)k1从第0位到第2位的值
- strlen k1 获取k1 的值的字符串长度
- mset k1 v1 k2 v2 k3 v3同时设置k1 k2 k3 的值分别为v1 v2 v3
- msetnx k1 v1 k2 v2 k3 v3当且仅当 “所有”k1 k2 k3 都 不存在时,设置k1 k2 k3的值位v1 v2 v3
- incr k1 如果k1的值为 数字(整数),则将其值加1. 若k1 不存在 则设置k1的值为1(默认值为0,incr之后为1)
- incrby k1 5如果k1的值为 数字(整数),则将其值加5.若k1 不存在 则设置k1的值为5(默认为0,incrby之后为5)
- incrbyfloat k1 1.22如果k1的值为 数字,则将其值加1.22若k1不存在则设置k1的值为1.22(默认为0,incrbyfloat之后为1.22)
- decr k1 如果k1的值为 数字(整数),则将其值减1,若k1不存在则设置k1的值为-1(默认为0, decr之后为-1)
- decrby k1 5如果k1的值为 数字(整数),则将其值减5,若k1不存在则设置k1的值为-5(默认为0,decrby之后为-5)
- (我曹,那浮点数的减法 是什么命令??????: 只能用 incrbyfloat k1 负数 来代替喽)
- append k1 aaa如果k1的值是个字符串,则在其值末尾拼接aaa,若k1不存在,则新建一个k1,其值为aaa
复制代码 2、hash(哈希)
Redis hash 是一个键值对聚集。是一个string范例的field和value的映射表,hash特殊恰当用于存储对象。
- hset person id 1 设置key为person 的hash,且其id 为1
- hget person id 获取key为person 的hash的id字段
- hmset person id 1 name lee 设置key为person的hash,且其id为1 name为lee
- hmget person id name 获取key为person的id 和 name字段
- hsetnx person age 25 当key为person的hash中age不存在时,设置age字段为25
- hkeys person获取key为person的hash的所有字段
- hvals person获取key为person的hash的所有字段的值
- hgetall person获取key为person的hash的所有字段和字段值
- del person 删除key为person 的hash数据
- hdel person id name 删除key为person中 的 id和name字段(所有字段都删除后 person自动删除)
- exist person 判断key为person的数据是否存在
- hexists person id 判断key为person的hash中id字段是否存在(没有hmexists 泪目)
- hincryby person id 2 给person的id字段上增加2(如果id为数字 且是整数) (没有hdecrby 泪目)
- hincrbyfloat person id 1.2 给person的id字段增加1.2(如果id为数字)(没有hincrbyfloat 泪目)
- dbsize 获取库中所有key的数目
- hlen person 获取key为person的hash中 的 字段总数
- (hscan命令 没看明白 以后在补上)
复制代码 3、list(列表)
Redis列表是简单的字符串列表(双向链表结构),按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)
- (列表允许 数值 重复)
- lpush teacher lee xue dong 从左侧将lee xue dong插入teacher(key)中
- lpop teacher 从teacher左侧移除一个数据
- rpush teacher lee xue dong 从右侧将lee xue dong插入teacher(key)中
- rpop teacher 从teacher右侧侧移除一个数据
- lrange teacher 0 2 从左侧遍历第0个到第2个teacher数据 (0 -1是遍历全部数据)(没有rrange命令)
- lindex teacher 1 索引teacher从左侧数第2个元素。(第一个是dong 第二个是xue)
- linsert teacher before lee geng 从左侧数teacher在lee的前边插入geng (即在lee的左侧插入geng,左侧数 前边就是左边)(没有rinsert)
- linset teacher after lee geng 从左侧数teacher在lee的后边插入geng(即在Lee的右侧插入geng,左侧数 后边就是右侧)(没有rinsert)
- llen teacher 获取teacher列表的长度
- lpushx teacher aa 如果teacher存在,从左侧插入aa。(teacher不存在则插不进去 不会建立新的键)
- rpushx teacher aa 如果teacher存在,从右侧插入aa。(teacher不存在则插不进去 不会建立新的键)
- lrem teacher 2 tian 从左侧数 删除teacher列表中的2个tian(如果tian不够,则删除所有)
- lrem teacher -2 tian 从右侧数 删除teacher列表中的2个天(如果tian不够,则删除所有)
- lrem teacher 0 tian 删除teacher列表中所有的tian
- lset teacher 1 su 从左侧数teacher列表在第2个位置添加su
- ltrim teacher 0 2 从左侧数将原teacher列表中从第0个值到第2个值得数据重新赋值给teacher
- rpoplpush teacher teacher2 将teacher列表中右侧第一个元素移除,并在teacher2列表中左侧添加进去
复制代码 4、set(聚集)
Redis的Set是string范例的无序聚集,聚集成员是唯一的,这就意味着聚集中不能出现重复的数据。
Redis 中 聚集是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
- (集合中 不允许 重复 、 且是无序的)
- sadd test a b c d 向test集合中添加元素a b c d
- smembers test 获取test集合的所有元素
- sismember test a 验证元素a是否是test集合的成员 (1是0不是)
- scard test 获取test集合中所有元素的个数
- srem test a b 从test集合中移除元素a和b
- spop test 从test集合中随机出栈(移除一个元素)
- srandmember test 从test集合中随机显示一个数
- smove test1 test2 a 将元素a从test1集合中移到test2集合中
- sdiff test1 test2集合test1和集合test2的 差集(即test1集合存在test2集合中不存在的元素)
- sdiffstore test3 test1 test2 将test1集合和test2集合 的差集 赋值给test3集合(如果test3集合中有值 则覆盖原
- 来的值)
- sinter test1 test2集合test1和集合test2的 交集(即test1集合和test2集合共同拥有的元素)
- sinterstore test3 test1 test2 将test1集合和test2集合 的交集 赋值给test3集合(如果test3集合中有值 则覆盖原来的值)
- sunion test1 test2集合test1和集合test2 的 并集 (即test1集合 和 test2 集合 所有的元素组合 且会去重)
- sunionstore test3 test1 test2将集合test1和集合test2的 并集 赋值给集合test3
- (sscan命令没看明白 以后补上)
复制代码 5、sorted set(有序聚集)
Redis 有序聚集和聚集一样也是string范例元素的聚集,且不答应重复的成员。不同的是每个元素都会关联一个double范例的分数。redis正是通过分数来为聚集中的成员举行从小到大的排序。有序聚集的成员是唯一的,但分数(score)却可以重复。
- (集合中 不允许 重复,有序的 分数是可以重复的)
- zadd subject 1 chinese 2 english 3 math 设置subject集合 元素 分别为 1分 chinese 2分english 3分 math
- zrange subject 0 -1 显示全部的subject集合的元素(分数默认是由低到高的)
- zrange subject 0 -1 withscores 显示全部的subject集合的元素 和 对应的分数(分数默认是由低到高的)
- zcard subject
- 显示subject集合的元素个数
- zcount subject 1 2
- 计算subject集合 分数在1和2之间的元素个数(包括1和2)
- zincrby subject 10 chinese
- 给集合subject的chinese元素的分数加10
- zinterstore subject
- zlexcount subject
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |