Redis基础

NoSQL简介

NoSQL有多种解释:(not relational SQL)意思为‘非关系SQL’,(NoSQL=not only SQL),意思为‘不仅仅是SQL’

    NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间不同,甚至远远超过两种关系型数据库不同。可以说,各种NoSQL产品各有所长,成功的NoSQL必然特博尔适应于某些场合或者某些应用。

    目前众多网站,如淘宝,京东,百度都在使用NoSQL的产品。

redis简介

redis是一个免费开源的Nosql产品。

Redis使用ANSIC语言编写,是一个key-value存储系统。它支持存储的value类型很多,包括string(字符串)、hash(哈希类型)、list(列表)、set(集合)、和zset(sorted set--有序集合)

redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。

redis是一个高性能的key-value NoSQL产品。它提供了java、C/C++、C#、PHP、JAVAScript、perl、Object-C、Python、ruby、Eriang等开发接口,使用很方便。

Redis的启动

服务端的启动

    redis-server

客户端的启动

    redis-cli    这种方式不支持中文

    redis-cli --raw    支持中文方式启动

redis基本操作

测试与redis服务器是否连通

    ping    

        当返回PONG说明已经连接成功

切换数据库

    数据库没有名称,用数字的标识来代表不同的数据库

    选择数据库,redis有从0到15、16个数据库

    select 3    选择3号数据库

    select 0    选择0号数据库

登录redis客户端,如果没有做任何select操作,默认选择0号数据库

Redis的数据类型

redis键值对的说明

redis是key-value的数据结构;

每条数据都是一个“键值对”

键(key)的类型是字符串(string)

值(value)的类型分为5中:

    1.字符串string

    2.哈希hash

    3.列表list

    4.无序集合set

    5.有序集合zset

字符串 string

添加修改值

    set 键 值  (set key value)

        如果键不存在,就是添加

        如果键存在,就是修改

添加一个键user1值为aaa

set user1 aaa

把键user1的值修改为bbb

set user1 bbb

setex 键 过期时间 值 (setex ) 

    过期时间单位为秒

添加一个键user2 值为bbb 过期时间为3秒

setex user2 3 bbb 

添加多个键值对

    mset 键1 值1 键2 值2......

 同时添加3个键值对

    mset user1 ccc user2 ddd user3 eee

已有值后面追加值

append 键 值

键user1的值后面追加内容haha

append user1 haha

获取值

get 键

获取user1的值

get user1

一次获取多个值

mget user1 user2 user5

删除值

del 键1 键2 键n .......

删除键同时删除对应的值

del user1 user2 

键相关操作

查找键

keys 键名

可以支持通配符*

查找user1是否存在

key user1 

判断键是否存在

exists 键名

如果存在返回1

不存在返回0

判断user1是否存在

exists user1 

查看键对应的值类型

type 键

查看user2对应值的类型

type user1

设置已有键的过期时间

expire 键 秒数

设置user2的过期时间为100秒

expire user2 100

查看键有效时间

ttl 键

    返回值:

    -1永远有效

   -2表示键不存在

    大于0,显示剩余有效时间,秒

查看user1的有效时间

ttl  user1

hash 哈希

hash用于存储“键值对”集合

每个哈希中的键可以理解为字段(fideld),一个字段(field)对应一个值(value)

hash中的值(value)类型为字符串(string)

同一个哈希字段名(field)不可以重复


哈希操作

添加值

hset 键 字段 值

设置键huser1的字段为name键为tom

增加一个hash类型的键值对,字段为name 值为tom

hset 'huser1' 'name' 'tom'

键 字段 值

添加多个值

hmset 值 字段1 值1 字段2 值2 .......  (本身hash就是由多个键值对组成)

添加一个huser2 值有两个

hmset huser2 name mary sex female

获取字段

hkeys 键

    获取指定键的所有字段名

获取huser2所有字段 

hkeys huser2

获取字段对应的值

hget 键 字段

获取huser2,字段name的值

hget huser2 name 

获取多个字段对应的值

hmget 键 字段1 字段2

获取huser2 name和sex字段的值

hmget huser2 name sex

获取所有字段的值

hvals 键

获取huser2所有字段的值

hvals huser2

获取所有字段名和对应的值

hgetall 键

获取huser1所有字段包括值

hgetall huser1

删除字段

hdel 键 字段名

把键huser2的字段sex删除

hdel huser2 sex 

列表 list

list介绍

列表中的值(value)类型为字符串(string)

列表中每个值按照添加的顺序排序

添加值

从列表左侧插入值

lpush 键 值1 值2......

新建一个键luser1,左侧添加值aa

lpush luser1 aa

从列表右侧插入值

rpush 键 值1 值2

rpush luser1 bb cc dd

从列表指定位置插入值

linsert key before 或 after 值 插入的新值 

    (before在..前 after在...后)

    在指定的值前面或后面插入新值

在键luser1 cc前面插入11值

linsert luser1 before cc 11 

在键luser1 cc后面插入22值

linsert luser1 after cc 22

获取值

lrange 键 start stop

start代表开始索引

stop代表结束索引

lrange 键 起始值的下一个值开始 终止索引下标

    0    第一个值的索引为0

    -1    最后一个值的索引为-1

获取列表所有的值

lrange luser 0 -1

获取从第三个元素开始获取到最后的值

lrange luser1 2 -1

修改值

第一行代表倒叙索引,第二行代表正序索引

lset 键 索引 值

修改制定索引的值

修改索引1的值为china(把第二个元素的值改为china)

lset luser1 1 china

删除值

lrem 键 count 值

    count = 0 删除指定的所有值

    count  < 0 代表从右往左删除指定数量的值

     count  > 0 代表从左往右删除指定数量的值

将列表前count次出现的值移除

向键luser2中加入值h0,h1,h2,h3,h0,h1,h0,h1

rpush luser2 h0 h1 h2 h3 h0 h1 h0 h1

从后往前,从右往左,删除一个h0

lrem luser2 -1 h0

删除所有的h0

lrem luser2 0 h0

无序集合

set介绍

无序集合中的值(value)类型为字符串(string)

集合里不允许有重复的值,

对于集合里的值只能添加与删除,不能修改


添加值

sadd 键 值1 值2 值3 值4....

    集合添加值

添加三个值 aa bb cc

sadd suser1 aa bb cc

获取值

smember 键

    获取集合的值

获取suser1所有的值

smember suser1 

删除值

srem 键 值

    删除指定的值

删除suser1的值cc

srem suser1 cc

有序集合

zser介绍

有序集合中的值(value)类型为字符串(string)

集合里不允许有重复的值

每个值都会关联一个分数(score),分数(score)可以为负数,通过分数(score)将值从小到大排序

对于有序集合的值只能添加与删除,不能修改

添加值

zadd 键 score1 值1 score2 值2 .....

添加三个值 分别为1,3,5,2

添加的值会按照分数从小到大排序

zadd zuser1 1 aa 3 dd 5 ee 2 cc

获取值

zrange 键 start stop[withsores]

    start 代表从0开始

    最后一个索引为-1

    withscores代表同时获取score

获取键zuser1的集合中所有的值

zrange zuser1 0 -1

获取键zuser1的集合所有的值,同时获取分数

zrange zuser1 0 -1withscores

通过score获取值

zrangebyscore 键 min max

    min代表分数的起始值

    max代表score的结束值

获取键zuser1的集合中分数(score)在4和9之间的值

zrangebyscore zuser 4 9

通过值得到score

zsore 键 值

    得到指定值得score

得到键zuser1 值dd的分数

zscore zuser1 dd 

删除值

zrem 键 值

    删除指定的值

删除键zuser1中的值bb

zrem zuser1 bb

通过score删除值

zremrangebyscore 键 min max

    min要删除score的最小值

    max要删除score的最大值

score从0到10之间的值都删除

zremrangebyscore zuser1 0 10


你可能感兴趣的:(Redis基础)