最近在学习redis,做了比较详细的学习笔记,分享给大家,欢迎一起讨论和学习

第一部分,简单介绍redis 和 redis的基本操作

NoSQL的特点 :
数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性.
数据之间无关系,这样就非常容易扩展,也无形之间,在架构的层面上带来了可扩展的能力.
NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式,
而在关系型数据库里,曾删字段是一件很麻烦的事情,数据量大就容易卡死.

redis 是什么,能干什么
redis 是一个基于内存的以key-value存储的并且支持持久化nosql数据库,
可以用来做缓存,消息队列,等

一, redis 基本操作命令
get key --得到key
set key string --设置key
keys * --查看所有的key
EXISTS key --判断这个key是否存在
move key db --移动key到某个库,当前库就没有了
expire key --给key设置过期时间,单位秒,过期后key就清除
ttl key --查看key还有多少秒过期,-1表示永不过期,-2表示已过期,其他的数字是单位秒.
type key --查看key是什么数据类型.
DEL key --删除某个key

redis数据类型
1,String --单key 单value
set/get/del/append/strlen
incr 自加1,
decr 自减1
incrby 加上多少
decrby 减去多少
--必须是数字才能进行加减

getrange --获取指定区间内的值,类似于截取字符串,getrange key 0 3;获取key第0到第3个中间的字符串.
setrange --设置指定区间范围内的值,setrange key 位置 具体值. 原来位置的值将被替换.
--加入test="abcdef", setrange test 0 xxx,把test从第0位开始,设置成xxx4. 结果是"xxxdef"

setex(set with expire)键秒值,set k1 10 abc,设置一个键是k1,值是abc, 存活10秒,
setnx(set if not exist),setnx k1 abc , 如果k1存在,就不会设置.

mset(more set) --同时设置多个key, mset k1 a k2 b k3 c
mget --同时get多个key, mget k1 k2 k3
msetnx --同时设置多个值,只要其中有一个key重复的,就不成功, 所有key不存在的才成功.
getset(先get再set) --

2,List --单key多value
lpush --lpush list0 1 2 3 4 5 6 7,从左边开始依次写入数据,(先进后出)
rpush --rpush list1 1 2 3 4 5 6 7,从右边开始依次写入数据,(先进先出)
lrange --lrange list0 0 -1,从左边,依次取出数据.

lpop --从左边,取出第一个值,清除
rpop --从右边,取出第一个值,清除

lindex --根据索引下标获得元素,(从上到下),索引从0开始.
llen --获取list的长度

lrem key --删除N个value, lrem list0 2 a, 在list里面删除2个a.
ltrim key --截取指定范围的值后再复制给key.index开始,index结束

rpoplpush 源 目标 --rpoplpush list0 list1,list0右边出站一个,从左边追加上list1上;

lset key index value --给某个下标设置具体的值;
insert key before 值 after --把befrore 和after 插入到已经存在的值前后.

List总结:
它是一个字符串链表,left,right都可以插入添加,
如果键不存在,创建新的链表; 键存在,新增内容; 如果值全部移除,对应的键也消失;
链表的操作无论是头和尾效率都高,但对中间元素操作,效率就低;

3,Set --单key多value
sadd --添加set元素;sadd set01 1 1 2 2 3 3,重复的会不添加;
smembers --取出set元素;SMEMBERS set01
sismember --sismember key 元素,判断是否存在元素

scard --scard key;获取集合里面的元素的个数.
srem key value --删除集合中某个元素;srem set01 1

srandmember key 某个整数(例如:3) --在key里面,随机出3个value;
spop key --随机出栈,一次出一个;

smove key1 key2 key1某个值 --把key1里面某个值移到key2,值的迁移;

数学集合类:
差集:sdiff key1 key2 --在第一个set里面,不在第二个set里面
交集:sinter --都在两个set里面
并集:sunion --在key1,或在key2里面, 有去重功能

4,Hash --kv模式不变,但v是一个键值对;
hset --hset user id 11(key 是user,value 是 id:11),
hget --hget user id:
hmset --同时设置多个k v,hmset cust id 11 name xiepng sex man
hmget --同时获取多个key的值, hmget cust id name sex
hgetall --获取这个key里面的所有的 k v, hgetall cust
hdel --删除这个key里面的额某个 k v ;

hlen --计算设个key的长度,里面有几个 k v ;

hexists key --在key里面是否存在某个值,hexists cust id

hkeys key --获取这个key下面所有的keys,, hkeys cust;
hvals key --获取这个key下面所有的values,, hvals cust;

hincrby --某个指定的key加上某个整数(加小数会报错)
hincrbyfloat--某个指定的key加上某个小数 (加正数也不会报错)

hsetnx --如果不存在就set某个可以;重复了不添加(只能加单个key)

5,ZSet --(有序集合,sorted set)
在set基础上,加一个score.
之前set是 k1 v1 k2 v2
现在是 k1 score v1 k2 score v2

zadd --zadd zset1 60 v1 70 v2 80 v3 90 v4 100 v5
zrange --zrange zset1 0 -1
ZRANGE zset01 0 -1 withscores ,

zrangebyscore key 开始score 结束score ,withscores(,不包含 limit开始下标,多少个;
-- ZRANGEBYSCORE zset1 (60 (90 limit 0 1
返回zset1里面score是60到90之间的(不包含60和90),范围是从第0个开始,截取1个

zrem key 某个score下对应的value值;作用是删除元素;-- ZREM zset1 v5

zcard --ZCARD zset1 ;计算这个key里面有多少个 kv对
zcount key score区间; --ZCOUNT zset1 60 90,计算这个key里面的score在这个范围内的有多少个;
zrank key values值,作用是获取下标值,这个value是第几个下标;--ZRANK zset1 v4
zscore key 对应值,获取分数;--ZSCORE zset1 v2

zrevrank key values值,作用是逆序获得下标值; -- ZREVRANK zset1 v4
zrevrange 逆转取出指定范围内的值 ; --ZREVRANGE zset1 0 -1
zrevrangebyscore key score2 score1 ;逆转取出score范围内的值 --ZREVRANGEBYSCORE zset1 90 60

要删除zset 整个集合, 直接del key 即可;

redis学习笔记(1)的更多相关文章

  1. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  2. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  3. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  4. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  5. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  6. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

  7. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  8. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  9. Redis学习笔记(三)Redis支持的5种数据类型的总结

    继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...

  10. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

随机推荐

  1. NOIp2013 火柴排队【逆序对/思维】 By cellur925

    题目大意:给你两列数\(ai\)和\(bi\),你可以交换每列数中相邻的两个数,求一个最小交换次数使\(\sum_{i=1}^{n}(a_i-b_i)^2\) 最小. 最后满足条件的两个序列一定是各个 ...

  2. [LOJ 2039] 「SHOI2015」激光发生器

    [LOJ 2039] 「SHOI2015」激光发生器 链接 链接 题解 分为两个部分 第一个是求直线之间的交点找到第一个触碰到的镜面 第二个是求直线经过镜面反射之后的出射光线 第一个很好做,第二个就是 ...

  3. 1137 - Sin your life sin公式 + 枚举

    http://www.ifrog.cc/acm/problem/1137 和差化积公式, 变成2 * sin((x + y) / 2) * cos((x - y) / 2) + sin(n - (x ...

  4. Jenkins+Gitlab+Ansible自动化部署(三)

    接Jenkins+Gitlab+Ansible自动化部署(一)https://www.cnblogs.com/zd520pyx1314/p/10210727.html 和(二)https://www. ...

  5. 关于Identityserver4和IdentityServer3 授权不兼容的问题

    使用IdentityServer3 作为授权服务器,如果没有设置证书,而且client又没有设置AccessTokenType = AccessTokenType.Reference,则获取token ...

  6. 自动生成sql

    添加下面这个类 public static class GetAllAttribute<T> where T : class { public static string Names; p ...

  7. Setting 之dashboard 点击跳转流程

    设置的主界面的可以通过修改xml中的dashboard_categaries.xml 文件实现,在DashboardSummary.java 文件中的rebuildUI()方法中将xml对应的实体类转 ...

  8. IT届常用单词读法纠正

    Bootstrap    ['bʊt'stræp] Java  ['dʒɑːvə] Node           [nod] @  [æt; ət] Common      ['kɑmən] Java ...

  9. centos下无法直接删除乱码文件及文件夹解决方案

    不知道怎么回事今天在系统上发现有一个名字为“\”的文件,使用rm -f \ 无法删除,最后没办法只能使用文件的inode号进行删除,以下是相关步骤: [oracle@prod-db ~]$ ls -i ...

  10. <转>Spring 知识点提炼

    Spring 知识点提炼 1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依 ...