您的位置:首页 > 数据库 > Redis

Redis从入门到放弃 之 常用命令和基本数据类型操作

2017-11-01 00:00 1041 查看

一、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                                ==================没看明白
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: