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

Redis入门和数据类型

2017-08-17 22:46 204 查看

1.Redis的介绍

1.1 Remote Dictionary Server (远程字典服务器)

Redis是一个使用ANSIC语言编写的遵守BSD协议的开源的noSLQ数据库,是一个高性能的(key:value)分布式内训数据库.

1.2 三个特点

支持数据持久化,可将内存中的数据保存在磁盘中,下次启动的时候可再次使用

除了key-value类型之外还支持多种数据类型(list,set,hash,zset,zset)

支持master-slave主从赋值的数据的数据备份

2. Linux环境下的Redis的安装

2.1 环境依赖

redis的安装需要GCC编译器,我是用的而是DeepinLinux发行版,内置了GCC,所以直接解压缩redis安装包就好了,没有安装

GCC编译器的需要先安装GCC编译器,这里给出参考链接Linux安装GCC编译器.

2.2 测试安装&简单操作

安装好之后,已因为实在linux环境下,为了保证出错之后的可恢复性,所以原始文件一般拷贝一份用作使用.

1. 使用
cp [源文件] [目标文件]
将安装好的目录下的redis.conf放在指定的目录下我这里路径是/home/bart/myredis.

2. 修该
redis.conf
的中general中的no修改为yes

3. 查看后台进程看redis是否存在后台
ps -ef | grep redis
lsof -i 6379
产看端口使用情况.

4. 赋值的
redis.conf
文件放在
/home/bart/myredis
目录下,切换到该目录,输入’redis-server redis.conf’启动redis服务,

5. 启动redis服务之后,链接客户端
redis-cli -p 6379
回车即可

6. 进入环境输入
ping
如果返回的是’PONG’表示链接成功.

7. 若想要退出redis环境,
shutdown
退出,然后
exit
退出.

8. 可以使用
redis-benchmark
测试本机安装redis的性能表现.(可选操作)

9. redis默认支持16个仓库,默认是第0个,使用
select [num]
选择使用哪个库,num范围[0,15]

10.
dbsize
:查看当前库中有多少个key;
keys *
:列出所有的key;
keys k?
:使用通配符形式列出所有的k开头的key

11. (!!!慎用)
flushdb
:清空当前库,
flushall
:清空所有库.

3. Redis的五大数据类型

Redis支持五大数据类型,包括String(字符串),List(列表),Hash(哈希类似Java中的Map),

Set(集合),Zset(Sorted Set有序集合)

3.1 String类型

3.1.1 简介

①String 是redis最基本的数据类型,于MemberCache一样单key单value

②String是二进制安全的,意味着String可以包含任何数据源,例如图片或者序列化对象

③String的value最多支持512MB的大小.

3.1.2 常用操作

set [key] [value]
:设置key:value

get [key]
:得到key对饮的value值

del [key]
:删除指定key及其值

append [key] [value]
: 向已经有值的key对追加value

strlen [key]
: 返回key对应的value的长度

incr/decr [key]
: 指定的key的value增加/减少 1,前提是key对应的value必须是数字类型.

incrby/decrby [key] [num]
:指定的key的value增加/减少num,前提是key对应的value必须是数字类型.

getrange/setrange [key] [索引]/[value]
:批量设置和得值

例如: 假如k1的值是:123456 ,
getrange k1 0 3
:返回0~3索引的值:1234.

setrange k1 0 xxx
: k1的值为:xxx456

setex [key] [second] [value]
: 设置key值为value存活时间为second秒;

10
setnx [key] [value]
: 当被设值的key不存在的时候该代码才生效.

mset [k1] [v1] [k2] [v2] ...
: 批量设值

mget [k1] [k2] [k3] ...
:批量返回值

msetnx [k1] [v1] [k2] [v2] ...
: 当所有被批量设值的key都不存在的时候才会成功.

getset [key] [value]
:先得到的值再设置key的值.

3.2 List类型

3.2.1 简介

是简单的字符串列表,按照插入顺序排列,底层是一个双向链表.

3.2.2 常用操作

lpush [k1] [v1 v2 v3 ...]
:相当于压入堆栈,从左到右先进后出.

rpush [k1] [v1 v2 v3 ...]
: 相当于队列,先进先出.

lrange [k1] 0 -1
: 返回k1对应的list的所有元素.

‘lpop/rpop [k1]’:取出栈顶的值/取出栈底的值.

llen [k1]
: 返回 k1 对应的list的长度.

lrem [k1]
[v1 v2 ... ]
: 删除 n 个 k1对应的list中的 v1,v2元素,n为0的时候表示删除所有v1,v2的值.

lindex [k1] [idx]
: 得到指定索引位置的值,索引从0开始.

ltrim [k1] [start] [end]
: 截取k1对应的list的[start,end]的值.

rpoplpush [k1] [k2]
: 表示从k1的栈底取一个值压入到k2的在栈顶.

lset [k1] [idx] [v1]
:将v1插入到指定索引idx处

linsert [k1] befor/after [v1] [v2]
: 表示将 v1 之前/之后插入 v2 .

3.3 Set类型

3.3.1 简介

是一个String类型的无序集合,通过HashTable实现.

3.3.2 常用操作

sadd [k1] [v1,v2,v3, ... ]
:将元素[v1,v2,v3, … ]添加到set集合中.

smembers [k1]
: 列出所有的k1对应的set集合元素.

sismember [k1] [x]
: 判断 [x] 是否在k1对应的set集合中,有返回1,否则返回0.

scard [k1]
:返回k1对应的set集合的元素的个数.

srem [k1] [x]
:将元素x从set集合中移除.

srandmember [k1] [num]
:从k1对应的set集合中取出num个随机数

- num为正数:获得num个随机数不重复.

- num为负数:获得num个随机书可能会重复.

spop [k1]
:随机从k1对应的set集合中取出一个元素.

smove [k1] [k2] [x]
:将k1中的x取出来放在k2中.

数学集合运算

sdiff [k1] [k2]
:返回在k1中但是不在k2中的元素.

sinter [k1] [k2]
:返回k1和k2中都有的元素.

sunion [k1] [k2]
:返回k1和k2的并集.

3.4 Hash类型

3.4.1 简介

Redis中的Hash是一个键值对集合,是一个String类型的field和value组成的映射表.适合存储对象.

类似Java中的HashMap

3.4.2 常用操作

hset [k1] [k11] [v11]
:给K1对应的Hash的k11字段赋值

例:
hset student id 1006
:表示给student的id赋值为1006

hget [k1] [k11]
:得到k1对应的k11字段的值

例:
hget student id
:返回1006

hmset [k1] [k11] [v11] [k12] [v12] ....
:批量赋值.

例:
hmset student id 1006 name bart age 16
:给student的id,name,age分别赋值1006,bart,16.

hmget [k1] [k11] [k12] [k13] ...
:批量获得指定的k1对应的k11,k12,k13对应的值.

例:
hmget student id name age
:返回 1006,bart,16.

hgetall [k1]
:得到k1对应的集合的所有属性及其值.

例:
hgetall student
:返回id,name,age的值.

hlen [k1]
:返回k1中的字段的数量.

hexists [k1] [k11]
:判断k11字段是否在k1中,有则返回1否则返回0.

hkeys [k1]
:返回k1中所有的字段名.

hvals [k1]
: 返回k1中所有的value值.

hincrby [k1] [k11] [num]
: 使k1对应的k11字段的value值自增num个(前提value必须是数字).

hincrbyfloat [k1] [k11] [num]
: 递增为float类型的小数.

hsetnx [k1] [k11] [v11]
:如果k1中的k11字段不存在,就给k11赋值v11.

3.5 ZSet类型

3.5.1 简介

带顺序的Set集合,实际上在每个元素后加上了一个score.的那是score不算一个单独的元素,他依附于元素而存在.

3.5.2 常用操作

zadd [k1] [s1 v1 s2 v2 s3 v3 ... ]
: 添加value并设置对应的分数值.

例:
zadd zset01 100 v1 90 v2 80 v3 70 v4 60 v5
:表示添加了v1,v2,v3,v4,v5元素对应的分数是:100,90,80,790,60.

zrange [k1] 0 -1
: 返回不带score(分数)的value.

zrange [k1] 0 -1 withscores
: 返回带score的value.

zrangebyscore [k1] [startScore] [endScore]
:返回所有的[startScore,endScore]的元素.

zrangebyscore [k1] [startScore] [endScore] withscores
:同上,不过是返回带分数的元素.

zrangebyscore [k1] ([startScore] [endScore]
: 注意”(“表示不等于,返回(startScore,endScore]的元素.

zrangebyscore [k1] [startScore] [endScore] limit [startIndx] [endIndex]
:返回所有的[startScore,endScore]的元素中的指定索引区间[startIndx,endIndex]的元素

z
cf53
rem [k1] [score]
: 删除score对应的key的值,可以是多个key.

例:
zrem zset01 v1 100
:表示删除分数为100 的v1的及其元素.

zcard [k1]
: 获得元素个数.

zrank [k1] [v1]
: 获得 v1 在 k1 中的索引位置.

zcount [k1] [startScore] [endScore]
:返回[startScore,endScore]区间的元素.

zscore [k1] [v1]
:获得k1集合中的v1的分数值.

zrevrank [k1] [v1]
:逆序返回k1集合中V1的索引位置.

zrevrange [k1] 0 -1
: 逆序返回k1中的所有能元素.

zrevrangebyscore [k1] [startScore] [endScore]
:逆序返回[startScore,endScore]区间的元素.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis 分布式